La fonction attendue est qu'après effets acquérir des données de manière asynchrone, la fenêtre contextuelle affiche les données acquises. Définissez la propriété d'indicateur d'état du composant pour savoir si le composant est affiché. Si l'attribut flag bit est placé dans l'état du modèle lorsque la page saute, le flag bit restera toujours dans l'état et la fenêtre contextuelle réapparaîtra lors du retour à la page, ce que je ne veux pas.
Personnellement, je pense qu'il est plus approprié de placer l'état pop-up dans l'état du composant de réaction.
S'il est ajouté à l'état du composant React, comment déclencher la mise à jour de l'état après le rappel des effets ? Ma question est la suivante. Changez-vous le cycle de vie de componentWillReceiveProps ? Ou est-ce une autre manière ?
J'ai pensé à une solution, et je ne sais pas si cela est approprié.
Dans l'action d'effets dipatch, en plus de la charge utile normale, j'ai également transmis la méthode de mise à jour de l'état en tant que paramètre à l'effet du modèle, et je l'ai appelée plus tard. le code s'affiche comme ci-dessous :
// 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'utilisez pas de rappels, chaque effet renverra une promesse après l'envoi, il suffit de gérer la fenêtre contextuelle dans la promesse
N'utilisez pas de rappels, chaque effet renverra une promesse après l'envoi, il suffit de gérer la fenêtre contextuelle dans la promesse
Comment y parvenir
Commentaire le plus utile
N'utilisez pas de rappels, chaque effet renverra une promesse après l'envoi, il suffit de gérer la fenêtre contextuelle dans la promesse