$set是Vue.js中的一个实例方法,用于让 Vue 实例添加一个新的响应式属性或修改已有的属性并预设值。
在 Vue.js 中,我们可以通过在 data 选项中声明对象和属性来创建响应式对象。例如:
data() {
return {
obj: {
name: 'Tom'
}
}
}
在这个例子里,obj 对象和 name 属性都是响应式的。Vue.js 会在初始化时自动将其转化为可观察对象,并追踪其变化。
但是,在某些情况下,可能需要动态向对象中添加属性,而这些属性不在 data 选项中预先声明。这时,就需要使用 $set 方法:
this.$set(this.obj, 'age', 18)
这样,就可以将 age 属性添加到 obj 对象中,并且 age 属性能够触发视图的重新渲染。需要注意的是,$set 方法只对响应式对象有效。对于非响应式对象,Vue.js 无法将其转化为响应式对象。
另外,当我们需要在响应式数组中动态添加或删除元素时,也需要使用 $set 方法来保证数组的响应性。这时需要使用 splice 方法来添加或删除元素,并且需要将该位置设置为响应式:
this.$set(this.arr, index, newValue)
其中 index 为数组中要修改的位置,newValue 为要赋值的新值。
综上所述, $set 方法是 Vue.js 中非常重要的一个实例方法,用于让 Vue 实例动态地添加响应式属性或修改已有的属性值。