react中为什么要使用immutable
Posted 修身齐家治国平天下
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了react中为什么要使用immutable相关的知识,希望对你有一定的参考价值。
因为在react中,react的生命周期中的setState()之后的shouldComponentUpdate()阶段默认返回true,所以会造成本组件和子组件的多余的render,重新生成virtual dom,并进行virtual dom diff,所以解决办法是我们在本组件或者子组件中的shouldComponentUpdate()函数中比较,当不需要render时,不render。
当state中的值是对象时,我们必须使用深拷贝和深比较!
如果不进行深拷贝后再setState,会造成this.state和nextState指向同一个引用,所以shouldComponentUpdate()返回值一定是false,造成state值改了,而组件未渲染(这里不管shouldComponentUpdate中使用的是深比较还是浅比较)。所以必须深拷贝。
如果不在shouldComponentUpdate中进行深比较,会造成即使state中的对象值没有改变,因为是不同的对象,而在shouldComponentUpdate返回true,造成不必要的渲染。
所以只能是深拷贝和深比较。
而深拷贝和深比较都浪费浏览器的性能,所以immutable登场了。
以上是关于react中为什么要使用immutable的主要内容,如果未能解决你的问题,请参考以下文章
react中createFactory, createClass, createElement分别在什么场景下使用,为什么要这么定义?