Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 如何定义Redux中还原程序的执行顺序?_Reactjs_Redux - Fatal编程技术网

Reactjs 如何定义Redux中还原程序的执行顺序?

Reactjs 如何定义Redux中还原程序的执行顺序?,reactjs,redux,Reactjs,Redux,假设我有一个动作A,它被分派到reducerR1和R2。我还有智能组件C,它连接到R1和R2返回的状态 在执行R1时,但在执行R2之前,是否可能重新提交组件C 如果我只想在执行R1和R2时重新播放C,该怎么办?或者是否可以让Reduxdispatcher首先将操作分派到R2 *R1实际上是reduxnormalizer返回的结果状态,R2是实体状态。需要实体对结果进行反规范化同步调度Redux操作,因此操作的所有副作用将在调度操作后立即发生。这意味着您的组件只会重新渲染一次,因为即使多次调用se

假设我有一个动作
A
,它被分派到reducer
R1
R2
。我还有智能组件
C
,它连接到
R1
R2
返回的状态

在执行
R1
时,但在执行
R2
之前,是否可能重新提交组件
C

如果我只想在执行
R1
R2
时重新播放
C
,该怎么办?或者是否可以让Redux
dispatcher
首先将操作分派到
R2


*
R1
实际上是redux
normalizer
返回的
结果
状态,
R2
实体
状态。需要
实体
结果进行反规范化

同步调度Redux操作,因此操作的所有副作用将在调度操作后立即发生。这意味着您的组件只会重新渲染一次,因为即使多次调用
setState
,React在状态更改时不会立即重新渲染(它似乎会延迟到下一个事件循环或动画帧)

只需更改调用的顺序
store.dispatch
,即可定义分派顺序。如果您想让
R1
更改的所有副作用首先发生,请先调用
R1。首先分派

是否可能在执行R1时,但在执行R2之前,重新提交了组件C

不,如果您使用Redux docs建议的单一商店,这是不可能的


在Redux中,您可以将减缩器与
组合减缩器()组合起来。这意味着从Redux的角度来看,只有一个减速器,并且它是同步的。当然,它会调用两个reducer,但Redux存储只有在从根reducer获取新状态值后才开始通知订阅者,因此可以保证在通知视图时,所有reducer都已执行,R1和R2都订阅了相同的操作A。因此我无法分离Dispatch。我遇到了与此类似的情况,即调用选择器并导致错误,因为未定义值。该值基于由2个减速器处理的单个动作。容器的mapStateToProps函数中引用了select。对这个丹有什么见解吗?