【发布时间】:2019-05-06 07:54:20
【问题描述】:
我有一些我无法弄清楚的问题。 我里面有一些组件,我正在使用 react-table 插件。
在componentDidMount 方法上,我必须调用从 api 获取数据的 redux 操作,然后我将此数据传递给 react-table。
这是我调用 redux 操作的 componentDidMount 方法。
componentDidMount() {
this.props.getData()
}
这是我的行动:
export const FETCH_DATA_START = 'FETCH_DATA_START'
export const FETCH_DATA_SUCCESS = 'FETCH_DATA_SUCCESS'
export const FETCH_DATA_FAILED = 'FETCH_DATA_FAILED'
export const getOffBoardingData = () => {
return (dispatch) => {
dispatch({
type: FETCH_DATA_START
})
fetch(baseUrl, {
credentials: "include",
method: "GET",
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
}
})
.then(res => res.json())
.then((res) => {
dispatch({
type: FETCH_DATA_SUCCESS,
payload: res.result
})
})
.catch((err) => {
dispatch({
type: FETCH_DATA_FAILED,
payload: 'error'
})
})
}
}
这是我的减速器。
import { FETCH_DATA_START, FETCH_DATA_SUCCESS, FETCH_DATA_FAILED } from 'store/actions/getData'
let initialState = [{
items: null
}]
export default (state = initialState, action) => {
switch (action.type) {
case FETCH_DATA_START:
return {...state}
case FETCH_DATA_SUCCESS:
return { ...state, items: action.payload}
case FETCH_DATA_FAILED:
return {...state}
default:
return state
}
}
我认为这里一切正常。
在我的组件中,我正在尝试进行条件渲染,例如:
if (this.props.getDataReducer.items != null) {
return (<div>
<p>Loading...</p>
</div>);
} else {
return(
<ReactTable className="-striped -highlight"
data={this.props.getDataReducer.items}
columns={columns}
/>
)
}
这是我为我的数据进行条件渲染。如果 items 为 null,则返回一些加载文本,否则返回带有来自 api 的数据的 react-table。
但我不知道当数据为空时 react-table 如何尝试渲染。
我在哪里返回 react-table 我正在尝试让 console.log 我的数据,但它返回 undefined
有时组件渲染没有问题,有时只是给出数据未定义的错误。
我对条件渲染有误?
我试图做到这一点:组件将等待数据,只有当数据到来时,组件才会呈现。
我在哪里犯错了?
【问题讨论】:
-
试试
if (this.props.getDataReducer.items) { //react table } else { // loading }
标签: javascript reactjs redux react-table