从Redux-Saga函数更新另一个Redux存储的最佳方法

时间:2018-05-08 23:58:01

标签: reactjs react-redux redux-saga

我有一个React / Redux应用程序,我选择将Redux状态分为两个主要部分,广告和任务,并使用combineReducers。

首先制作广告。可以将单个广告或一组广告分组并分配给新任务。

在我的广告商店中,我有缩减器和传奇功能,可以使api调用与广告相关,并为广告更新Redux状态。

在我的任务商店中,我有reducers和saga函数,它们使api调用与任务相关,并为任务更新Redux状态。

从广告集合创建任务时,我需要更新广告Redux状态。最初我只是派遣我的广告动作创建者进行api调用并检索所有广告的更新列表。不幸的是,api调用是一个非常复杂的查询,因此相当耗时。

当我进行api调用以创建任务时,我得到了一些数据,我可以使用它来更新广告Redux状态,避免必须进行缓慢的api调用。

由于多个广告可用于创建任务,因此我的广告ID存储在数组中。

我正在试图找出如何循环遍历该数组并在广告Redux存储中调度reducer以使用此数据更新状态。

我遇到的一个问题是错误,指出无法从我用来迭代广告ID数组的forEach循环中调用yield。

另一个问题是找到从另一个Redux商店更新状态的最佳方法。

我想我可以将所有内容组合到一个Redux商店中,但该文件将会无限长。

不确定要去哪个方向。

1 个答案:

答案 0 :(得分:0)

使这个困难的真正问题是弄清楚如何在循环中使用收益率。

这最终起作用了:

yield myArray.map((item: string) => 
    put(OtherReduxStoreActions.myActionCreatorFunction(item))
);