监视数据原理
Vue
会监视data
中所有层次的数据
监视对象
通过setter
实现监视, 且要在new Vue
时就传入要监视的数据
- 通过
obj.xxx
添加的属性,Vue
默认不做响应式处理 - 如需给后添加的属性做响应式, 需要使用如下
API
:
js
Vue.set(target, key, value)
vm.$set(target, key, value)
监视数组
通过包裹数组更新元素的方法实现, 本质就是做了如下两件事:
- 调用原生对应的方法对数组进行处理更新
- 重新解析模板, 进而更新页面
在 Vue 中修改数组
相关API
:
push()
pop()
shift()
unshift()
splice()
sort()
reverse()
Vue.set(target, key, value)
或vm.$set(target, key, value)
特别注意
Vue.set()
和vm.$set()
不能给vm
或vm
的根数据对象添加属性- 将
Vue
实例中的data
改为_data
中的数据及getter
和setter
的形式叫做数据劫持