当 redux 状态更新时,在组件上调用 forceUpdate()
call forceUpdate() on component when redux state updates
我有一个问题,Redux 状态已成功更新,但反应组件没有重新渲染,经过一些研究,我相信[forceUpdate()][1]
可以解决我的问题,但我不确定实现它的正确方法,即在 redux 状态更新之后。我尝试在github上查找示例,但没有运气。
正如其他人所说,forceUpdate()
基本上是一个黑客。每当道具和状态发生变化时,您都可以免费获得更新。React 和 Redux 可以无缝地协同工作,因此请避免任何此类黑客攻击。
如果你的 Redux 状态更新正确,而你的 React 视图没有,那么你很可能没有以不可变的方式更新。检查您的减速器。
您的问题可能是您正在更新的状态不是顶级属性。 react 调用 "shallowEqual" 方法来判断道具是否已更新。 这意味着所有顶级属性,但是如果要更改更深的属性并且所有顶级属性都相同,则不会重新渲染。
我不确定 redux 是否会出现这种情况,也许它正在做更复杂的事情,但我知道这就是反应中的工作流程。值得一看。
这不是
您想要的解决方案。
如果不查看您的代码,就不可能判断出实际出了什么问题,但 forceUpdate 不是解决方案。 如果新数据被放置在状态或 props 中,React 将重新渲染。 如果不重新渲染,则意味着数据没有完全通过。
Redux 已经在使用 connect decorator 做forceUpdate
了。也许您在组件中错过了这一点。这种行为在官方文档的 React 用法 部分有解释。
相关文章:
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 如何从Java/scala调用js美化程序
- 如何调用这个匿名 JavaScript 函数
- 如何从模块链中调用函数.导出到节点中
- 我需要从php调用javascript或jquery
- Chrome开发工具(如何知道我在调用哪个javascript对象)
- 单击按钮后如何逐个调用分区,上一个分区将隐藏
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- Twitter Bootstrap typeahead:使用“this”获取上下文/调用元素
- node.js:setInterval()正在跳过调用
- 如何在单击复选框后调用控制器方法
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 使用Google Visualization动态调用构造函数
- 如何在webView,Android中从@JavascriptInterface方法调用Javascript
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 调用函数内部的函数
- 函数未在Object.keys或Object.getOwnPropertyNames下列出,但可以调用
- 当 redux 状态更新时,在组件上调用 forceUpdate()
- 在jsx内部调用forceUpdate