当 redux 状态更新时,在组件上调用 forceUpdate()

call forceUpdate() on component when redux state updates

本文关键字:调用 forceUpdate 组件 状态 redux 更新      更新时间:2023-09-26

我有一个问题,Redux 状态已成功更新,但反应组件没有重新渲染,经过一些研究,我相信[forceUpdate()][1]可以解决我的问题,但我不确定实现它的正确方法,即在 redux 状态更新之后。我尝试在github上查找示例,但没有运气。

正如其他人所说,forceUpdate()基本上是一个黑客。每当道具和状态发生变化时,您都可以免费获得更新。React 和 Redux 可以无缝地协同工作,因此请避免任何此类黑客攻击。

如果你的 Redux 状态更新正确,而你的 React 视图没有,那么你很可能没有以不可变的方式更新。检查您的减速器。

您的问题可能是您正在更新的状态不是顶级属性。 react 调用 "shallowEqual" 方法来判断道具是否已更新。 这意味着所有顶级属性,但是如果要更改更深的属性并且所有顶级属性都相同,则不会重新渲染。

我不确定 redux 是否会出现这种情况,也许它正在做更复杂的事情,但我知道这就是反应中的工作流程。值得一看。

这不是

您想要的解决方案。

如果不查看您的代码,就不可能判断出实际出了什么问题,但 forceUpdate 不是解决方案。 如果新数据被放置在状态或 props 中,React 将重新渲染。 如果不重新渲染,则意味着数据没有完全通过。

Redux 已经在使用 connect decorator 做forceUpdate了。也许您在组件中错过了这一点。这种行为在官方文档的 React 用法 部分有解释。