A função esperada é que, após os efeitos adquirirem os dados de forma assíncrona, a janela pop-up exiba os dados adquiridos. Defina a propriedade do sinalizador de estado do componente para saber se o componente é exibido. Se o atributo do bit de flag for colocado no estado do modelo quando a página pular, o bit de flag ainda permanecerá no estado e a janela pop-up aparecerá novamente ao retornar à página, que é o que eu não quero.
Pessoalmente, acho que é mais apropriado colocar o estado pop-up no estado do componente de reação.
Se for adicionado ao estado do componente de reação, como acionar a atualização de estado após o retorno de chamada dos efeitos? Minha pergunta é esta. Você altera o ciclo de vida de componentWillReceiveProps? Ou é de outra forma?
Pensei em uma solução e não sei se isso é apropriado.
Na ação de efeitos dipatch, além da carga útil normal, também passei o método de atualização do estado como um parâmetro para o efeito do modelo, e o chamei mais tarde. código mostrado abaixo:
// 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,
});
}
},
}
Não use callbacks, todo efeito retornará uma promessa após o envio, apenas manipule a janela pop-up na promessa
Não use callbacks, todo efeito retornará uma promessa após o envio, apenas manipule a janela pop-up na promessa
Como conseguir
Comentários muito úteis
Não use callbacks, todo efeito retornará uma promessa após o envio, apenas manipule a janela pop-up na promessa