Vue2响应式原理:
通过Object.defineProperty()对属性进行修改拦截(数据劫持)
这样的方式会导致
- 新增属性、删除属性,界面不会响应式更新
- 直接通过下标的方式修改数组也不会自动更新
解决办法:通过this.$set()方式添加删除数据,或者引入vue后直接调用Vue.set
Vue3响应式原理:
通过Proxy(代理)拦截对象中源属性值的变化通过reflect(反射)对被代理的对象属性进行操作
Vue2响应式原理:
通过Object.defineProperty()对属性进行修改拦截(数据劫持)
这样的方式会导致
解决办法:通过this.$set()方式添加删除数据,或者引入vue后直接调用Vue.set
Vue3响应式原理:
通过Proxy(代理)拦截对象中源属性值的变化通过reflect(反射)对被代理的对象属性进行操作