答:
首先,因为Vue 无法检测到对象属性的添加或删除,所以Vue 提供了 Vue.set (object, propertyName, value)来实现为对象添加响应式属性
其次,我认为vm.$set 的实现原理针对目标的种类不同分为两个方面:
第一方面:如果目标是数组,直接使用数组的 splice 方法触发响应式;
第二方面:如果目标是对象,会先判读属性是否存在、对象是否是响应式,最终如果要对属性进行响应式处理,则是通过调用 defineReactive 方法进行响应式处理( defineReactive 方法就是 Vue 在初始化对象时,给对象属性采用 Object.defineProperty 动态添加 getter 和 setter 的功能所调用的方法)
Vue 怎么用 vm.$set() 解决对象新增属性不能响应的问题 ?
最新推荐文章于 2023-05-03 14:57:14 发布