行动前的redux saga

时间:2018-02-17 17:46:43

标签: redux redux-saga

我有完整的应用程序,具体取决于从服务器请求加载的配置数据,如何在"之前创建阻塞"使用redux saga对每个动作采取行动,现在我的globalSaga看起来像这样。非常感谢帮助

function * rootSaga () {
  yield takeLatest(LOAD_ONBOARDING.REQUEST,loadOnboardingSaga)
  const res = yield put.resolve(loadOnboarding())
  yield console.log(res)

  yield all([
    fork(globalSaga),
    fork(spaceSaga),
    fork(profileSaga),
    fork(userSaga),
    fork(pagesSaga)
  ])
}

1 个答案:

答案 0 :(得分:1)

takeLatest与自动取消每个后续分叉的分叉相同。请查看this以获取描述性示例。

所以在你的情况下,因为loadOnboardingSaga应该连续阻止下一次调用,最便宜的解决方案就是将它全部置于loadOnboardinSaga以下,因为有这样的直接继承:



function* initRestSaga() {
  yield all([
    fork(globalSaga),
    fork(spaceSaga),
    fork(profileSaga),
    fork(userSaga),
    fork(pagesSaga)
  ])
}

function* loadOnboardingSaga() {
  //...
  const res = yield put.resolve(loadOnboarding())
  yield console.log(res)
  yield call(initRestSaga)

}

function* rootSaga() {
  yield takeLatest(LOAD_ONBOARDING.REQUEST, loadOnboardingSaga)
}




否则你必须手动分叉并取消takeLatest和last fork之间的每一个副作用。