产生原因:
Vue2 现在是通过Object.defineProerty
来进行数据的双向数据绑定
Object.defineProerty
目前主要有三个问题
- 不能监听数组的变化
- 必须遍历对象的每个属性
- 必须深层遍历嵌套的对象
Vue2 实现响应式渲染更新原理,在于监听data里的数据,但针对于对象、数组这类结构较深的数据无法完全监测
解决方案:
1.使用 Vue.set 和 this.$set
区别:
Vue.set
和 this.$set
的区别不大,主要都是用于更新数组,不过Vue.set
可以添加属性,this.$set
则是修改属性。
Vue.set
可以设置实例创建之后添加的新的属性,(在data里未声明的属性),而this.$set
只能设置实例创建后存在的属性
用法:
Vue.set( target, key