rt,看了很多文章还是不理解有什么具体的优势?
假如要解决浅比较更新的问题,我之前一般都是
setState(prev => {
// 修改prev内某个key值
prev.[......].value = 'xxx'
return {
...prev
} // 数组就是[...prev]
})
immer.js则是:
import produce from 'immer';
const array = [{value: 0}, {value: 1}, {value: 2}];
const arr = produce(array, draft => {
draft[0].value = 10;
});
console.log(arr === array);
//false
从更新的角度来说都是最终的链接不一样了,生成新的对象,immer.js原理也是解构赋值。。。对于React来说,只要父节点不同就会直接重新渲染子树,这样的话我直接解构不是一样的吗?绝大多数场景的话,例如商品列表,使用解构赋值的话,每次也是返回一个不同的引用类型,但是为什么还需要使用immutable和immer这类呢?
但是dva.js等都引入immer.js或者immutable.js,我觉得既然大家都使用他必定是有他的价值
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…