effets: {
/**
* 数据查询
*
* <strong i="6">@param</strong> {any} { payload }
* <strong i="7">@param</strong> {any} { select, call, put }
*/
query: async function ({ payload }, { select, call, put }) {
await put({ type: 'show_loading' });
payload.page = payload.page || 1;
payload.limit = payload.limit || 10;
let data = await call(query, '/home/course', payload);
if (data) {
await put({
type: 'query_success',
payload: {
list: data.data,
total: data.count,
current: data.currentPage,
},
});
}
}
},
effets: {
/**
* 数据查询
*
* <strong i="6">@param</strong> {any} { payload }
* <strong i="7">@param</strong> {any} { select, call, put }
*/
query: function* ({ payload }, { select, call, put }) {
yield put({ type: 'show_loading' });
payload.page = payload.page || 1;
payload.limit = payload.limit || 10;
let data = yield call(query, '/home/course', payload);
if (data) {
yield put({
type: 'query_success',
payload: {
list: data.data,
total: data.count,
current: data.currentPage,
},
});
}
}
},
Oui, l'effet ne prend en charge que le libellé du générateur. async
et await
peuvent être utilisés en dehors de l'effet, puis utilisez l'appel de rendement pour ajuster l'effet.
je comprends merci mon Dieu
Excusez-moi, effect aura-t-il une chance de prendre en charge l'async à l'avenir ? @désolé
Async n'a pas de générateur contrôlable, tel que cancel
, c'est pourquoi redux-saga choisit d'utiliser un générateur.
Oh
@sorrycc Comment puis-je annuler un effet ?
@miaojiuchen Quelle est la scène ?Pourquoi annuler l'effet ?
@désolé, j'ai rencontré ce scénario :
C'est bien sur une page, mais si vous visitez d'autres pages et revenez ensuite à la page précédente, l'effet 2 sera répété.
Comment puis-je annuler l'effet de l'effet 1 puis déclencher l'effet 2 ?
Dois-je utiliser des abonnements de chemin pour appeler @@CANCEL_EFFECTS ?
Merci.
@sorrycc Puisque vous avez également mentionné les scénarios qui doivent utiliser l'annulation ici, en fait, async/wait est suffisant dans la plupart des cas. Dans l'utilisation actuelle, utilisez generator/yield pour appeler async/await. C'est trop pénible. L'auteur peut envisager de prendre en charge les deux modes en même temps et laisser les utilisateurs choisir eux-mêmes, comme ajouter un élément de configuration et appeler le mode async/await après ouverture , Ou jugement adaptatif.
Vous pouvez essayer redva , le même framework
Commentaire le plus utile
@sorrycc Puisque vous avez également mentionné les scénarios qui doivent utiliser l'annulation ici, en fait, async/wait est suffisant dans la plupart des cas. Dans l'utilisation actuelle, utilisez generator/yield pour appeler async/await. C'est trop pénible. L'auteur peut envisager de prendre en charge les deux modes en même temps et laisser les utilisateurs choisir eux-mêmes, comme ajouter un élément de configuration et appeler le mode async/await après ouverture , Ou jugement adaptatif.