我有一个问题,即redux状态正在成功更新,但反应组件没有重新渲染,经过一些研究我相信[forceUpdate()][1]
可以解决我的问题,但我不确定正确的方法来实现它,即在redux之后状态更新。我尝试在github上查找示例,但没有运气。
答案 0 :(得分:9)
正如其他人所说,forceUpdate()
基本上是一种黑客行为。只要道具和状态发生变化,您就可以免费获得更新。 React和Redux无缝地协同工作,因此避免任何此类黑客攻击。
如果您的Redux状态正在正确更新且您的React视图不是,那么您很可能不会以不可变的方式进行更新。检查减压器。
答案 1 :(得分:4)
您的问题可能是您正在更新的状态不是顶级属性。 react调用“shallowEqual”方法来判断道具是否已更新。这意味着所有顶级属性,但如果您要更改更深层的属性并且所有顶级属性都相同,那么您将不会重新渲染。
我不确定redux是否会出现这种情况,也许它正在做更复杂的事情,但我知道这是反应中的工作流程。值得一看。
答案 2 :(得分:1)
这不是你想要的解决方案。
在不查看代码的情况下,无法确定实际出现的错误,但forceUpdate不是解决方案。如果新数据放置在州或道具中,则React将重新渲染。如果您不重新渲染,则意味着您的数据无法完全呈现。
答案 3 :(得分:1)
Redux已经使用connect装饰器进行了forceUpdate
。也许你错过了组件中的这一点。官方文档的Usage with React部分对此行为进行了解释。