効果:{
/**
* 数据查询
*
* <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,
},
});
}
}
}、
効果:{
/**
* 数据查询
*
* <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,
},
});
}
}
}、
はい、エフェクトはジェネレーターの表現のみをサポートします。 async
とawait
は効果の外で使用でき、yield呼び出しを使用して効果を調整できます。
分かります、神に感謝します
すみません、エフェクトは将来非同期をサポートするチャンスがありますか? @sorrycc
Asyncには、 cancel
などの制御可能なジェネレーターがありません。そのため、redux-sagaはジェネレーターの使用を選択します。
ああ
@sorryccエフェクトをキャンセルするにはどうすればよいですか?
@miaojiuchenシーンは何ですか?なぜエフェクトをキャンセルするのですか?
@sorrycc私はこのシナリオに遭遇しました:
これは1つのページでは問題ありませんが、他のページにアクセスして前のページに戻ると、効果2が繰り返されます。
エフェクト1のエフェクトをキャンセルしてから、エフェクト2をトリガーするにはどうすればよいですか?
@@ CANCEL_EFFECTSを呼び出すには、パスサブスクリプションを使用する必要がありますか?
ありがとう。
@sorryccここでcancelを使用する必要があるシナリオについても
あなたはredvaを試すことができます、同じ
最も参考になるコメント
@sorryccここでcancelを使用する必要があるシナリオについても