当 redux 状态更新时在组件上调用 forceUpdate()
call forceUpdate() on component when redux state updates
我有一个问题,redux 状态被成功更新,但反应组件没有重新渲染,经过一些研究我相信 [forceUpdate()][1]
可以解决我的问题,但我不确定实现它的正确方法,即redux 状态更新后。我尝试在 github 上查找示例,但没有成功。
这不是您想要的解决方案。
如果不查看您的代码,就无法判断到底哪里出了问题,但是 forceUpdate 不是解决方案。如果新数据被放置在 state 或 props 中,React 将重新渲染。如果您没有重新渲染,则意味着您的数据没有完全通过。
Redux 已经在 forceUpdate
中使用官方文档的 connect decorator. Maybe you miss this point in your component. This behaviour is explained on the Usage with React 部分。
正如其他人所说,forceUpdate()
基本上是一个 hack。只要道具和状态发生变化,您就可以免费获得更新。 React 和 Redux 可以无缝协作,因此请避免任何此类 hack。
如果您的 Redux 状态正在正确更新而您的 React 视图没有正确更新,那么很可能您没有以不可变的方式进行更新。检查你的减速器。
您的问题可能是您正在更新的状态不是顶级 属性。 react 调用一个 "shallowEqual" 方法来判断 props 是否已经更新。这意味着所有顶级属性,但如果您正在更改更深的 属性 并且所有顶级属性都相同,那么您将不会重新渲染。
我不确定 redux 是否会出现这种情况,也许它正在做一些更复杂的事情,但我知道这是反应中的工作流程。值得一看。
我有一个问题,redux 状态被成功更新,但反应组件没有重新渲染,经过一些研究我相信 [forceUpdate()][1]
可以解决我的问题,但我不确定实现它的正确方法,即redux 状态更新后。我尝试在 github 上查找示例,但没有成功。
这不是您想要的解决方案。
如果不查看您的代码,就无法判断到底哪里出了问题,但是 forceUpdate 不是解决方案。如果新数据被放置在 state 或 props 中,React 将重新渲染。如果您没有重新渲染,则意味着您的数据没有完全通过。
Redux 已经在 forceUpdate
中使用官方文档的 connect decorator. Maybe you miss this point in your component. This behaviour is explained on the Usage with React 部分。
正如其他人所说,forceUpdate()
基本上是一个 hack。只要道具和状态发生变化,您就可以免费获得更新。 React 和 Redux 可以无缝协作,因此请避免任何此类 hack。
如果您的 Redux 状态正在正确更新而您的 React 视图没有正确更新,那么很可能您没有以不可变的方式进行更新。检查你的减速器。
您的问题可能是您正在更新的状态不是顶级 属性。 react 调用一个 "shallowEqual" 方法来判断 props 是否已经更新。这意味着所有顶级属性,但如果您正在更改更深的 属性 并且所有顶级属性都相同,那么您将不会重新渲染。
我不确定 redux 是否会出现这种情况,也许它正在做一些更复杂的事情,但我知道这是反应中的工作流程。值得一看。