Redux 按顺序为单个减速器分配多个动作';t反映连接组件的状态变化

Redux 按顺序为单个减速器分配多个动作';t反映连接组件的状态变化,redux,react-redux,Redux,React Redux,当为一个减速器分派多个不同的操作时,只有最后一个操作触发组件更新。然后解释可能更好 关于提供的示例的一些注释: App组件反映其道具的更新历史redirectPath。当它为null时,则no redirect字符串将添加到历史记录中 有一个reducer,它根据操作只返回一个普通的字符串或null 通过按下按钮Do redirect,我希望这两个操作(SET\u redirect和CLEAR\u redirect)都能为AppContainer组件提供已更改的状态。但只有最新的(CLEAR\u

当为一个减速器分派多个不同的操作时,只有最后一个操作触发组件更新。然后解释可能更好

关于提供的示例的一些注释:

  • App
    组件反映其道具的更新历史
    redirectPath
    。当它为
    null
    时,则
    no redirect
    字符串将添加到历史记录中
  • 有一个reducer,它根据操作只返回一个普通的
    字符串
    null
  • 通过按下按钮
    Do redirect
    ,我希望这两个操作(
    SET\u redirect
    CLEAR\u redirect
    )都能为
    AppContainer
    组件提供已更改的状态。但只有最新的(
    CLEAR\u REDIRECT
    )会触发具有
    null
    值的呈现方法
  • 若我们在调度这些动作之间增加了一点延迟,那个么它们都会触发组件的渲染。您可以通过按“延迟执行重定向”按钮进行检查
  • 我希望状态中的两个更改(由
    SET\u REDIRECT
    CLEAR\u REDIRECT
    操作提供)都应该在分派操作时触发组件更新,而不使用
    setTimeout

    我还尝试将
    CLEAR\u REDIRECT
    的调度从中间件移动到
    SET\u REDIRECT
    之后,但结果相同

    我能达到预期的行为吗

    最初,我将问题发布到redux repo,因为我认为这是redux中的一个问题,但@jimbolla向我解释说,这主要是由react设计的


    这里是对redux团队成员的原始问题和评论的参考。

    永远不要依赖于在
    render()中执行状态更新。
    。应在
    render()
    中执行的唯一代码是构造视图所需的代码

    您可以使用
    componentWillReceiveProps
    跟踪组件何时接收到新属性


    您应该侦听相应的属性,并在收到时执行重定向。然后,您应该侦听指示重定向成功的属性,然后可以根据需要调度一个操作以清除重定向状态,这将触发另一个组件更新。

    您可以使用componentWillReceiveProps
    ,这是一个非常正确的观点。我也来了。