我处于这样一种情况,即子更换器在更新自己的子状态时需要从其父状态知道一小部分数据。将一个不同的动作传递给子减速器是否是一个好主意,而不是调用父减速器的动作?
要明确的是,我不是在谈论改变原始动作,我会创建一个稍微修改过的新动作以添加额外的数据。 Redux文档说不要改变动作,但不要传递不同的动作。
所以一个例子就是将一个名为ADD_TO_CURRENT_INDEX
的动作传递给根减速器,该减速器存储一个数组和"当前"指数。是否可以将新动作ADD_TO_THIS_SPECIFIC_INDEX
发送到数组的子减速器,因为我们知道此级别的当前索引?
答案 0 :(得分:1)
这个概念当然有点不寻常,但据我所知它是有效的。 root reducer函数作为一个整体需要遵守(state, action) -> newState
和不可变数据更新的基本reducer规则,但是Redux并不关心如何实际实现reducer函数的内部。如果你想通过调用另一个函数来处理某个场景并传入一个“新”动作而不是传递的实际动作,只要行为一致且整体可重复,那就应该没问题。
答案 1 :(得分:-1)
您可以在子减速器中处理该动作类型。 (我误解了你的问题吗?)
如果要在reducer函数中调度操作,则会导致错误。详情请见here
更新:您无法在reducer功能中调度操作。但是,您可以使用redux-thunk
等中间件向您的动作创建者发送多个动作。
因此,不是从一个reducer发送一个动作到它的sub-reducer,你可以从thunk中一起调度这些动作。并且您需要从父减速器获取的信息可以重新计算并成为动作有效负载的一部分。
另外,如果一个州可以直接从另一个片段派生出来,你可能想重新考虑一下你的州树的设计。