在一个不覆盖shouldComponentUpdate的组件中,forceUpdate和setState之间有什么区别吗?
更新:我已经知道文档上说了什么,也知道forceUpdate并不是推荐的方法。我只是想更深入地了解发生了什么。我想知道为什么?而且我已经知道setState会将传递的对象(状态“增量”——像SQL更新一样)与当前状态对象合并。
假设一个简单的用例:不需要撤消或时间旅行功能。不需要在shouldComponentUpdate内部进行指针比较。实际上,根本不需要使用shouldComponentUpdate。
在这种情况下,对我来说,改变状态并调用forceUpdate()是一种完全有效的使用React的方式。从黑盒子的角度来看,这两种技术似乎具有完全相同的效果:
技术 #1: this.state.x = 10; this.forceUpdate();
技术 #2: this.setState({x:10});
再次说明,我已经知道有些人喜欢永远不改变状态,并使用函数式编程风格。我只是想知道是否有任何技术原因要避免使用技术 #1。还是我漏了什么?
更新:我已经知道文档上说了什么,也知道forceUpdate并不是推荐的方法。我只是想更深入地了解发生了什么。我想知道为什么?而且我已经知道setState会将传递的对象(状态“增量”——像SQL更新一样)与当前状态对象合并。
假设一个简单的用例:不需要撤消或时间旅行功能。不需要在shouldComponentUpdate内部进行指针比较。实际上,根本不需要使用shouldComponentUpdate。
在这种情况下,对我来说,改变状态并调用forceUpdate()是一种完全有效的使用React的方式。从黑盒子的角度来看,这两种技术似乎具有完全相同的效果:
技术 #1: this.state.x = 10; this.forceUpdate();
技术 #2: this.setState({x:10});
再次说明,我已经知道有些人喜欢永远不改变状态,并使用函数式编程风格。我只是想知道是否有任何技术原因要避免使用技术 #1。还是我漏了什么?