【问题标题】:Redux Saga Watch Multiple ActionRedux Saga 观看多项动作
【发布时间】:2019-03-10 06:26:56
【问题描述】:

我的 Saga Root 看起来像这样

export default function* root() {
  yield takeLatest(LOAD_SEARCHRESULTS, getSearchResults);
}

它观察 LOAD_SEARCHRESULTS 动作,然后调用 getSearchResults 函数。

有什么方法可以让我在 root 中查看多个操作? 像这样的:

export default function* root() {
  yield takeLatest(LOAD_SEARCHRESULTS, getSearchResults);
  yield takeLatest(CHANGE_ALIASFILTER, getSearchResults);
  yield takeLatest(CHANGE_CATFILTER, getSearchResults);
}

因此,如果出现任何这些操作 - 它会调用 getSearchResults。我试过 yield all([]) 和 takeEvery 但它只关注第一个动作。

【问题讨论】:

    标签: javascript reactjs react-redux redux-saga


    【解决方案1】:

    takeLatest也可以采取一系列动作,所以你只需要做

    export default function* root() {
      yield takeLatest([LOAD_SEARCHRESULTS, CHANGE_ALIASFILTER, CHANGE_CATFILTER], getSearchResults);
    }
    

    另一种选择是使用allfork,例如here

    【讨论】:

    • 我们可以反其道而行之吗?像这样:yield takeLatest(LOAD_SEARCHRESULTS, [getSearchResults, getTotalResults]);。因此,当我们监听一个动作并触发它时,我们会调用两种方法。
    • @jake-ferguson takeLatest 定义为takeLatest(pattern, saga, ...args),当 saga 是一个生成器函数时。因此,似乎不支持传递多个 sagas。我认为唯一的方法是将这两个 sagas 合二为一。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    相关资源
    最近更新 更多