La función esperada es que después de que los efectos adquieran datos de forma asincrónica, la ventana emergente muestra los datos adquiridos. Establezca la propiedad del indicador de estado del componente para determinar si se muestra el componente. Si el atributo de bit de bandera se coloca en el estado del modelo cuando la página salta, el bit de bandera seguirá en el estado y la ventana emergente volverá a aparecer cuando regrese a la página, que es lo que no quiero.
Personalmente, creo que es más apropiado colocar el estado emergente en el estado del componente de reacción.
Si se agrega al estado del componente de reacción, ¿cómo activar la actualización de estado después de la devolución de llamada de efectos? Mi pregunta es esta. ¿Cambia el ciclo de vida de componentWillReceiveProps? ¿O es de otra forma?
Pensé en una solución y no sé si es apropiada.
En la acción de efectos dipatch, además de la carga útil normal, también pasé el método de actualización del estado como parámetro al efecto del modelo y lo llamé más tarde. el código se muestra a continuación:
// 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,
});
}
},
}
No use devoluciones de llamada, cada efecto devolverá una promesa después del envío, solo maneje la ventana emergente en la promesa
No use devoluciones de llamada, cada efecto devolverá una promesa después del envío, solo maneje la ventana emergente en la promesa
Como lograrlo
Comentario más útil
No use devoluciones de llamada, cada efecto devolverá una promesa después del envío, solo maneje la ventana emergente en la promesa