VUE(Vue.js)是一種用于構建交互式Web用戶界面的JavaScript框架。Vue的核心思想是“響應式編程”,Vue能夠通過數據驅動視圖的方式快速的搭建Web應用。在Vue框架中,$set方法是一個重要的API,作用是在Vue實例化的data中添加一個新的屬性,如果想在Vue的響應式系統中對一個屬性綁定進行賦值,那么$set方法是非常重要的。
在Vue框架中,因為Vue響應式系統是基于Angular的變化監測機制實現的,當一個對象被加入Vue的數據集合中后,Vue會新建一個Observer對象,將當前對象的所有屬性都轉成getter/setter,并且給這些新屬性賦予一個唯一的ID,通過這個ID來進行該屬性的監測。
const data = {
arr: [1, 2, 3]
};
Object.keys(data).forEach(key =>{
console.log(data[key]);
});
data.arr.push(4);
Object.keys(data).forEach(key =>{
console.log(data[key]);
});
上面給出的是一個簡單的對于Vue數組修改的例子,如果使用數組的push()方法將新的數據添加進入數組中,如果想配合Vue的變量響應式能力監聽變量的變化,我們只需要通過Vue提供的$set方法來給新增的數據添加一個屬性ID。
Vue.set(data.arr, 3, 4);
VUE提供的$set()方法,會生成相應的get/seter,并且將該數組設置為響應式的。另外,Vue還提供了一些其他的數據操作方法,例如:Vue.delete(),可以刪除數組或對象中的屬性。
Vue.delete(data.arr, 2);
使用$set()和delete()方法操作數組或者對象時,需要注意的是如果數組或對象不存在某個屬性值,delete()方法不會產生任何效果,而$set()方法會將新增屬性轉化成響應式對象,但是通過Vue提供的$set方法添加的屬性不會出現在vue實例初始化階段的響應式對象中,需要注意。
通過上面的介紹我們可以知道,$set方法是Vue響應式數據操作中一個非常重要的API,能夠幫助我們解決在Vue實例化的數據中添加新的屬性的問題,同時對于數組或對象的刪除操作也非常方便,通過使用$set()方法和delete()方法進行數據操作,不但不會丟失Vue響應式數據的能力,還能夠更加方便和快捷的對Vue響應式數據集合進行操作。