【发布时间】: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