Ожидаемая функция заключается в том, что после того, как эффекты получают данные асинхронно, во всплывающем окне отображаются полученные данные. Установите свойство флага состояния компонента, указывающее, отображается ли компонент. Если атрибут флагового бита помещается в состояние модели при переходе страницы, бит флага все равно останется в этом состоянии, и всплывающее окно появится снова при возврате на страницу, чего я не хочу.
Лично я считаю, что всплывающее окно более целесообразно поместить в состояние компонента реакции.
Если он добавлен к состоянию компонента реакции, как запустить обновление состояния после обратного вызова эффектов? У меня такой вопрос. Вы меняете жизненный цикл componentWillReceiveProps? Или это по-другому?
Я придумал решение и не знаю, подходит ли оно.
В действии эффектов dipatch, в дополнение к обычной полезной нагрузке, я также передал метод обновления состояния в качестве параметра для эффекта модели и вызвал его позже. код показан ниже:
// route components.js
showDetail = (record) => {
const { dispatch } = this.props;
dispatch({
type: effects.getDetail,
payload: { id: record.id },
callback: () => {
this.setState({
detailVisible: true,
});
},
});
};
// models
effects: {
*getDetail({ payload, callback }, { call, put }) {
const response = yield call(getDetail, payload);
if (response.success) {
if (callback && typeof callback === 'function') {
callback();
}
yield put({
type: 'getDetailSuccess',
payload: response,
});
}
},
}
Не используйте обратные вызовы, каждый эффект будет возвращать обещание после отправки, просто обработайте всплывающее окно в обещании
Не используйте обратные вызовы, каждый эффект будет возвращать обещание после отправки, просто обработайте всплывающее окно в обещании
Как этого добиться
Самый полезный комментарий
Не используйте обратные вызовы, каждый эффект будет возвращать обещание после отправки, просто обработайте всплывающее окно в обещании