Redux Saga观看多重行动

Dam*_*man 9 javascript reactjs redux-saga react-redux

我的传奇根看起来像这样

export default function* root() {
  yield takeLatest(LOAD_SEARCHRESULTS, getSearchResults);
}
Run Code Online (Sandbox Code Playgroud)

它监视LOAD_SEARCHRESULTS动作,然后调用getSearchResults函数.

有什么方法可以在root中观看多个动作吗?像这样的东西:

export default function* root() {
  yield takeLatest(LOAD_SEARCHRESULTS, getSearchResults);
  yield takeLatest(CHANGE_ALIASFILTER, getSearchResults);
  yield takeLatest(CHANGE_CATFILTER, getSearchResults);
}
Run Code Online (Sandbox Code Playgroud)

因此,如果其中任何一个操作进入 - 它调用getSearchResults.我已经尝试过全部收益([])和takeEvery但它只是观察第一个动作.

leo*_*rou 20

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

export default function* root() {
  yield takeLatest([LOAD_SEARCHRESULTS, CHANGE_ALIASFILTER, CHANGE_CATFILTER], getSearchResults);
}
Run Code Online (Sandbox Code Playgroud)

另一种选择是使用allfork,就像这里一样

  • 我们可以相反地做吗?就像这样:`yield takeLatest(LOAD_SEARCHRESULTS,[getSearchResults,getTotalResults]);`。因此,当我们听一个动作时,当它触发时,我们调用了两个方法。 (2认同)
  • 当 saga 是生成器函数时,@jake-ferguson takeLatest 定义为“takeLatest(pattern, saga, ...args)”。因此传递多个传奇似乎不受支持。我认为唯一的方法是将这两个传奇故事合二为一。 (2认同)