我在应用程序中有许多表单,为了重用相同的表单,但使用不同的'id‘,我创建了一个组件,具有以下传奇:
export default function FormSaga(SEND_REQUEST) {
return function* () {
yield takeLatest(SEND_REQUEST, submit);
};
}但是如果我需要放弃表单提交,Saga的手册为我提供了这个解决方案:
function* main() {
while ( yield take('START_BACKGROUND_SYNC') ) {
// starts the task in the background
const bgSyncTask = yield fork(bgSync)
// wait for the user stop action
yield take('STOP_BACKGROUND_SYNC')
// user clicked stop. cancel the background task
// this will cause the forked bgSync task to jump into its finally block
yield cancel(bgSyncTask)
}
}我试过这个:
export default function FormSaga(SEND_REQUEST, ABORT_REQUEST) {
return function* () {
while (yield take(SEND_REQUEST)) {
const submitTask = yield fork(submit);
yield take(ABORT_REQUEST);
yield cancel(submitTask);
}
};
}但它不起作用。
如果有人可以帮我重写我的takeLatest,这样任务取消就可以工作了?谢谢!
发布于 2021-04-05 04:18:28
我猜找到了解决方案,看起来是可行的。
const task = yield takeLatest(SEND_REQUEST, submit);
yield take(ABORT_REQUEST);
yield cancel(task);https://stackoverflow.com/questions/66911663
复制相似问题