У меня есть проблема, которую я не могу понять.У меня есть какой-то компонент внутри, я использую плагин таблицы реакции.
на componentDidMount
методе, я должен вызвать избыточное действие, которое получает данные из API, а затем я передаю эти данные в таблицу реакции.
вот мой componentDidMount метод, в котором я вызываю redux action.
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.
но я не знаю, как реагирует таблица-таблица при рендеринге, когда данные тоже нулевые.
где я возвращаю таблицу реакции, я пытаюсь сделать console.log моими данными, но они возвращаютсяundefined
иногда рендеринг компонентов без проблем, иногда просто выдает ошибку, что данные не определены.
Я делаю ошибку по поводу условного рендеринга?
Я пытался сделать это: компонент будет ждать данных, и только когда данные придут, этот компонент будет рендериться.
где я ошибаюсь?