【发布时间】:2017-05-08 07:20:56
【问题描述】:
在不覆盖shouldComponentUpdate的组件中,forceUpdate和setState有什么区别吗?
更新:我已经知道文档说了什么,而 forceUpdate 不是推荐的方法。我只是想更深入地了解正在发生的事情。我想知道为什么?而且我已经知道 setState 将传递的对象(状态“delta” - 有点像 sql 更新)与当前状态对象合并。
假设一个简单的用例:不需要撤消或时间旅行功能。无需在 shouldComponentUpdate 内部进行指针比较。事实上,完全不需要使用 shouldComponentUpdate。
在这种情况下,在我看来,突变状态和调用 forceUpdate() 是使用 React 的一种完全有效的方式。从黑盒的角度来看,这两种技术似乎具有完全相同的效果:
技巧#1: this.state.x = 10; this.forceUpdate();
技巧#2: this.state.setState({x:10});
再一次,我已经知道有些人宁愿从不改变状态。并使用函数式编程风格。我只是想知道是否有任何技术原因可以避免使用技术 #1。还是我错过了什么?
【问题讨论】:
-
这两个没有相似之处,完全不同,setState用来更新状态变量然后react触发重新渲染,通过forceUpdate()我们可以告诉React组件需要重新渲染。检查这个:stackoverflow.com/questions/35284105/…
-
使用技巧1有一些缺点:你可以在stackoverflow.com/questions/47237556/…查看这个
标签: reactjs