Я довольно новичок, чтобы реагировать на нативную проблему, проблема, с которой я пытаюсь получить данные из действия в 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 он показывает только первое, а не второе.
ComponentDidMount
{screenProps: undefined, navigation: {…}, loading: true, doctorName: "",
doDoctors: ƒ}
render
{screenProps: undefined, navigation: {…}, loading: true, doctorName: "",
doDoctors: ƒ}
{screenProps: undefined, navigation: {…}, loading: true,
doctorName: Array(10), doDoctors: ƒ}
Любая помощь приветствуется.