认识
2023年06月10日
一、认识
Vue.set(target, key, val)
由于 Vue
无法探测普通的新增 property
(比如 this.myObject.newProperty = 'hi'
),所以通过 Vue.set
为向响应式对象中添加一个 property
,可以确保这个新 property
同样是响应式的,且触发视图更新。主要过程如下:
-
更新数组指定下标的元素:
Vue.set(array, idx, val)
,内部通过splice
方法实现响应式更新 -
更新对象已有属性:
Vue.set(obj, key ,val)
,直接更新即可 =>obj[key] = val
-
不能向
Vue
实例或者$data
动态添加根级别的响应式数据 -
Vue.set(obj, key, val)
,如果obj
不是响应式对象,会执行obj[key] = val
,但是不会做响应式处理 -
Vue.set(obj, key, val)
,为响应式对象obj
增加一个新的key
,则通过defineReactive
方法设置响应式,并触发依赖更新