Immutable是不可改变的,是指一旦创建就不能再被更改的数据。
对Immutable对象的任何修改或添加删除操作都会返回一个新的Immutable对象。当数据被修改时,会返回一个新的对象,但新的对象会尽可能地利用之前的数据结构而不会对内存造成浪费。
也就是使用旧数据创建新数据时,要保证旧数据同时可用且不变,同时为了避免深拷贝把所有节点都复制一遍带来的性能损耗,Immutable使用了结构共享。如果对象树中的节点发生变化,只修改这个节点和受它影响的父节点,其他节点则进行共享。
JS数据转换为Immutable数据Immutable数据转换为JS数据在做react性能优化时,为了避免重复渲染,我们会在shouldComponentUpdate中进行对比。而Immutable通过is方法就可以进行对比,无需像
function touchAndLog(touchFn) {
let data = { key: 'value' };
touchFn(data);
console.log(data.key); // 猜猜会打印什么?
}
在不查看 touchFn 的代码的情况下,因为不确定它对 data 做了什么,因此并不能确定会打印什么。但如果 data 是Immutable 的呢,你可以很肯定的知道打印的是 value 。