是否不可变地修改传递给子化简器的动作不合时宜



我的情况是,子化简器在更新自己的子状态时需要从其父状态中知道一点数据。将不同于调用父化简器的操作传递给子化简器是一个好主意吗?

需要明确的是,我不是在谈论改变原始操作,我会创建一个稍微修改以添加额外数据的新操作。Redux 文档说不要改变动作,但没有关于传递不同动作的内容。

因此,一个例子是将一个名为ADD_TO_CURRENT_INDEX的操作传递给根化简器,该归化器存储数组和"当前"索引。是否可以将新的操作ADD_TO_THIS_SPECIFIC_INDEX发送到数组的子化简器,因为我们知道此级别的当前索引?

这个概念当然有点不寻常,但据我所知它是有效的。 根化简器函数作为一个整体需要遵守(state, action) -> newState和不可变数据更新的基本化简器规则,但 Redux 并不关心化简器函数的内部是如何实际实现的。 如果要通过调用另一个函数并传入"新"操作而不是正在调度的实际操作来处理特定场景,则只要行为总体上一致且可重复,就可以了。

您可以在子减速器中处理该操作类型。(我误解了你的问题吗?

如果要在化简器函数中调度操作,则会导致错误。在此处查看详细信息

更新:无法在化简器函数中调度操作。但是,您可以使用中间件(如 redux-thunk )从操作创建者那里调度多个操作。

因此,您不必将操作从一个化简器调度到其子化简器,而是可以从一个 thunk 中一起调度这些动作。 并且您需要从父化简器获得的信息可以重新计算并成为操作有效负载的一部分。

此外,如果一个状态可以直接从另一个片段派生,您可能需要重新考虑状态树的设计。

最新更新