Я новичок в реагировании на родные, проблема, с которой я сталкиваюсь, заключается в попытке получить данные из действия в componentdidmount, но когда я устанавливаю свои реквизиты, данные равны нулю. Реквизиты устанавливаются, если я обращаюсь к ним в методе рендеринга. Может кто-нибудь посмотреть код и сказать мне, что я делаю неправильно.
Ниже я получаю действие
export const Accountability = connect(
// inject states
(state: States) => ({
// props.loading -> modules.app.loading
loading: state.app.loading,
doctorName: state.doctor.doctorName
}),
// inject actions
dispatch => ({
doDoctors: () =>
dispatch(actions.doctor.getDoctors())
})
)(AccountabilityView)
Вот я и звоню.
render() {
const {loading, doDoctors, doctorName } = this.props
// Getting the data here.
doDoctors()
}
Одна вещь, которую я замечаю, это то, что я получаю предупреждение в консоли
ExceptionsManager.js:82 Предупреждение. Невозможно выполнить обновление во время существующего перехода состояния (например, в пределах render
). Методы рендеринга должны быть чистой функцией свойств и состояния.
ОБНОВЛЕНИЕ: в настоящее время все мои файлы разделены (действие, редуктор, константы, индекс). Мое действие получает данные из вызова API. Ниже мой редуктор:
import { handleActions } from 'redux-actions'
import { LOAD_DOCTORS } from './constants'
export type DoctorState = {
doctorName: string
}
const initialState: DoctorState = {
doctorName: '',
}
export default handleActions(
{
[LOAD_DOCTORS]: (state: DoctorState = initialState, action): DoctorState
=> {
const p = action.payload
return {
doctorName: p.doctorName,
}
},
},
initialState
)
ОБНОВЛЕНИЕ: 2 Это то, что код показывает в консоли, обратите внимание, что doDoctors, который возвращает массив, пуст при первом вызове. При вызове в ComponentDidMount он показывает только первый, а не второй.
компонентдидмаунт
{screenProps: undefined, navigation: {…}, loading: true, doctorName: "",
doDoctors: ƒ}
оказывать
{screenProps: undefined, navigation: {…}, loading: true, doctorName: "",
doDoctors: ƒ}
{screenProps: undefined, navigation: {…}, loading: true,
doctorName: Array(10), doDoctors: ƒ}
Любая помощь будет оценена по достоинству.
doDoctors()
в функцииrender()
? Можете ли вы дать более крупный фрагмент? - person jeanpaul62   schedule 25.03.2019render()
, не так ли? Вы пытались вызвать это вcomponentDidUpdate
, как только все необходимые реквизиты были готовы? - person skyboyer   schedule 25.03.2019