数组内是对象,可以响应数据变化

来源:4-10 检测变化的注意事项

慕虎8177602

2019-03-24

老师,当数组内是对象,比如 list: [ { a: 1 }, { a: 2 }, { a: 3 }, { a: 4 }, { a: 5 }],当触发数据改变, this.list[2][“a”] = 1111;页面会自动更新,这是为啥呢,当数组内元素都是简单类型时,就和vue文档说的一样,不会自动更新了

写回答

2回答

qq_飞越疯人院_1

2019-06-02

你这个是触发已经定义并观察过的对象key,是可以的,this.list[2]['b'] = 222就不行了。

1
0

ustbhuangyi

2019-03-24

this.list[2]['a'] 你修改的是对象元素,对象元素在初始化阶段会建立 getter 和 setter,如果你在 render 的时候使用了这个对象元素就相当于做了依赖收集,所以当你修改它的时候会触发更新。

1
0

Vue.js 源码深入解析 深入理解Vue实现原理

全方位讲解 Vue.js 源码,进阶高级工程师

4984 学习 · 1037 问题

查看课程