Javascript 不可变地修改传递给子减速器的操作是否是不规则的?

Javascript 不可变地修改传递给子减速器的操作是否是不规则的?,javascript,redux,Javascript,Redux,我所处的情况是,子减速器在更新自己的子状态时,需要从其父状态了解少量数据。将不同的操作传递给子减速器(与调用父减速器的操作不同)是一个好主意吗 要清楚的是,我不是说对原始操作进行变异,我会创建一个新的操作,稍微修改以添加额外的数据。Redux文档说不要改变动作,但是没有关于传递不同动作的内容 例如,一个名为ADD_TO_CURRENT_INDEX的操作被传递到根缩减器,它存储一个数组和“CURRENT”索引。由于我们知道此级别的当前索引,因此可以将新操作添加到该数组的子减速器中吗?您可以在子减速

我所处的情况是,子减速器在更新自己的子状态时,需要从其父状态了解少量数据。将不同的操作传递给子减速器(与调用父减速器的操作不同)是一个好主意吗

要清楚的是,我不是说对原始操作进行变异,我会创建一个新的操作,稍微修改以添加额外的数据。Redux文档说不要改变动作,但是没有关于传递不同动作的内容


例如,一个名为
ADD_TO_CURRENT_INDEX
的操作被传递到根缩减器,它存储一个数组和“CURRENT”索引。由于我们知道此级别的当前索引,因此可以将新操作
添加到该数组的子减速器中吗?

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

如果要在reducer函数中分派操作,则会导致错误。详见

更新:不能在reducer函数中分派操作。但是,您可以使用像
redux-thunk
这样的中间件从动作创建者那里发送多个动作

因此,您可以通过thunk将这些动作一起发送,而不是将动作从一个减速器发送到它的子减速器。您需要从父减速器获得的信息可以重新计算,并成为动作有效载荷的一部分


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

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

对不起,不完全是这样。我的意思是,如果是这样的话,一个减速机会收到一个像ADD_TO_CURRENT_INDEX这样的操作,并从以前的状态读取当前索引,然后将一个新的操作ADD_INDEX和有效负载中的当前索引一起传递给子减速机(而其他子减速机会获得原始索引)。@RahatAhmed请参阅更新。基本上,你可以通过
redux thunk
轻松实现你想要的,你不需要在一个reducer函数中分派动作,我仍然没有谈论分派动作。我说的是把一个动作传递给一个减速机作为它的参数。