问题描述
假设有这么一个数组, 长度为10000
items: [
{ name: 'a' },
{ name: 'b' },
{ name: 'c' },
...
]
然后用它来渲染一个列表,现在问题是,如果我要修改某个对象的值,比如
this.items[100].name = 'haha'
页面重渲染的时候就会出现延迟卡顿
问题出现的环境背景及自己尝试过哪些方法
跟了一下vue的源码
get: function reactiveGetter () {
var value = getter ? getter.call(obj) : val;
if (Dep.target) {
dep.depend();
if (childOb) {
childOb.dep.depend();
if (Array.isArray(value)) {
console.log(就是这里)
dependArray(value);
}
}
}
return value
},
它会触发 dependArray(value)
,value
值对应items数组,而这个方法会遍历整个数组重新收集依赖
所以有没有什么好的方法来解决这个问题?