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组件方法中为什么要绑定this

为什么要从众多的前端框架中选择React?

react中createFactory, createClass, createElement分别在什么场景下使用,为什么要这么定义?

为什么代码中使用import React from 'react'

为何要使用React Hooks?

react中constructor和super的使用