为一个缩减器分派几个不同的动作时,只有最后一个动作触发组件更新。这可能会更好地show然后解释。按顺序为单个缩减器分派多个动作并不反映连接组件的状态变化
上提供的示例中的一些注意事项:
App
部分反映更新的历史,它的道具redirectPath
。当它作为null
然后no redirect
字符串添加到历史。- 有一个reducer,根据操作返回一个普通的
string
或null
。 - 通过按下按钮
Do redirect
我期望这两个操作(SET_REDIRECT
和CLEAR_REDIRECT
)都将更改状态提供给AppContainer
组件。但只有最新的一个(CLEAR_REDIRECT
)才会触发呈现方法,其值为null
。 - 如果我们在派发这些动作之间增加了一些微小的延迟,那么它们都会触发组件的渲染。您可以按
Do redirect with delay
按钮进行检查。
我希望在状态方面的变化(由SET_REDIRECT
和CLEAR_REDIRECT
行动提供)应触发组件更新无需调度操作时使用setTimeout
。
我也尝试从中间件移动CLEAR_REDIRECT
的调度,得到SET_REDIRECT
后,但结果相同。
我可以以某种方式达到预期的行为吗?
最初我将问题发布到redux回购,因为我认为这是一个问题,但@jimbolla解释说,它主要是通过设计反应。
以下是对redux团队成员https://github.com/reactjs/redux/issues/2532的原始问题和意见的参考。
'你可以使用componentWillReceiveProps' 这是一个非常正确的点。我也来过它。 – likerRr