【问题标题】:react-router Link changing route prior to redux state updates?react-router 链接在 redux 状态更新之前更改路由?
【发布时间】:2022-10-04 23:06:27
【问题描述】:

我有 2 页 A 和 B。B 上有一个链接通过 react-routerLink 指向 A。

B -> 单击链接到 A -> A

B 在 componentWillUnmount 上调度了一个 redux 操作,更新了应该在 A 中反映的一些状态。但是,尽管 redux 操作在 A 的 componentDidMount 之前运行,但是当生命周期方法运行时,props 还没有更新。在挂载 A 之后有一个额外的重新渲染,它反映了新的 redux 状态,但我想要挂载上的道具。

有什么简单的方法可以解决这个问题吗?

【问题讨论】:

  • 不,不是真的。该操作是否以任何方式异步操作?
  • @DrewReese 不,我设置了断点,并且减速器在下一个组件中的 componentDidMount 之前被命中,但是直到在初始安装后重新渲染,减速器状态才反映在组件中。
  • 您能否更新您的问题以包含 minimal reproducible example,其中包含 redux 代码(操作和减速器)和触发状态更新和导航效果的 UI 代码?
  • @DrewReese 我已经尝试过,但我无法最低限度地复制它。所以我希望有人能指出我正确的方向,因为我正处于调试停滞状态。 redux 操作触发,我看到 reducer 为该操作运行,但紧接着下一个组件上的 componentDidMount 使用未更新的道具运行,然后在瞬间使用正确的道具重新渲染。在减速器开发工具日志中,我在应用减速器操作之前看到 LOCATION_CHANGE。在其他情况下它可以工作,所以我不知道在哪里看。不过我会继续调试,谢谢。

标签: javascript reactjs redux react-router frontend


【解决方案1】:

经过更多研究,似乎是期望 React 可以选择何时调用componentWillMountcomponentWillUnmount,所以这首先不是一个正确的假设。

【讨论】:

    猜你喜欢
    • 2017-07-04
    • 1970-01-01
    • 2018-09-04
    • 2016-11-26
    • 2016-10-21
    • 2017-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多