Auswirkungen: {
/**
* 数据查询
*
* <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,
},
});
}
}
},
Auswirkungen: {
/**
* 数据查询
*
* <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,
},
});
}
}
},
Ja, Effect unterstützt nur den Wortlaut des Generators. async
und await
können außerhalb des Effekts verwendet werden und dann den Yield-Aufruf verwenden, um den Effekt anzupassen.
Ich verstehe, danke Gott
Entschuldigung, wird Effect in Zukunft eine Chance haben, Async zu unterstützen? @sorrycc
Async hat keinen steuerbaren Generator, wie etwa cancel
, weshalb redux-saga sich dafür entscheidet, den Generator zu verwenden.
Oh
@sorrycc Wie kann ich einen Effekt abbrechen?
@miaojiuchen Was ist die Szene, warum den Effekt abbrechen?
@sorrycc Ich bin auf dieses Szenario gestoßen:
Dies ist auf einer Seite in Ordnung, aber wenn Sie andere Seiten besuchen und dann zur vorherigen Seite zurückkehren, wird Effekt 2 wiederholt.
Wie kann ich den Effekt in Effekt 1 abbrechen und dann Effekt 2 auslösen?
Muss ich Pfadabonnements verwenden, um @@CANCEL_EFFECTS aufzurufen?
Danke.
@sorrycc Da Sie auch erwähnt haben, welche Szenarien Sie hier verwenden müssen, ist async/await in den meisten Fällen ausreichend. In der aktuellen Verwendung verwenden Sie generator/yield, um async/await aufzurufen. Dies ist zu mühsam. Der Autor kann erwägen, beide Modi gleichzeitig zu unterstützen und den Benutzern die Auswahl selbst überlassen, z nach dem Öffnen oder adaptives Urteilsvermögen.
Sie können redva ausprobieren, das gleiche
Hilfreichster Kommentar
@sorrycc Da Sie auch erwähnt haben, welche Szenarien Sie hier verwenden müssen, ist async/await in den meisten Fällen ausreichend. In der aktuellen Verwendung verwenden Sie generator/yield, um async/await aufzurufen. Dies ist zu mühsam. Der Autor kann erwägen, beide Modi gleichzeitig zu unterstützen und den Benutzern die Auswahl selbst überlassen, z nach dem Öffnen oder adaptives Urteilsvermögen.