Vue监视数据原理
1 Vue会监视data中所有层次的数据(递归)
2 如何监视对象中的数据?
通过setter实现监视,且要在new Vue的时候就传入要监测的数据。
(1)对象中后追加的属性,Vue默认不做响应式处理
(2)如需给后续添加的属性左响应式,请使用下面的API:
Vue.set(target,propertyName/index,value):target不允许是Vue实例或者vm中的data对象
vm.$set(target,propertyName/index,value)
3 如何监测数组中的数据?
通过包裹数组更新元素的方法实现,本质做了两件事:
(1) 调用原生对应的方法对数组进行更新
(2) 重新解析模板,进而更新页面
4 在Vue中修改数组中的某个元素一定要用如下方法:
(1)使用这些API:push(),shift(),unshift(),splice(),sort(),reverse()
(2)Vue.set()或vm.$set()
非变更方法,例如 filter()
、concat()
和 slice()
。它们不会变更原始数组,而总是返回一个新数组。当使用非变更方法时,可以用新数组替换旧数组: