色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

vue $set原理

阮建安1年前8瀏覽0評論

Vue是一個流行的前端框架,提供了很多實用的API方法幫助我們解決開發中遇到的問題。其中,$set方法就是一個非常常用的方法,它被用來改變Vue實例的響應式數據,讓我們來看一下它的原理吧。

$set方法的調用方式是:Vue.set(obj, key, value)或者vm.$set(obj, key, value),其中obj是要操作的對象,key是要修改的屬性名,value是要設置的值。這個方法的作用是將一個屬性添加到響應式數據中,在該屬性不存在時,會將它添加到對象中,并使其成為響應式的。

// 示例代碼
let vm = new Vue({
data: {
obj: {},
},
});
vm.$set(vm.obj, 'key', 'value');
console.log(vm.obj.key); // value

在上面的代碼中,我們使用了$set方法將一個新屬性添加到了obj對象中,這個屬性名為key,值為value。使用$set方法的好處是,它會觸發響應式數據的更新,從而讓我們可以實時觀察到數據的變化。

那么$set方法是如何實現的呢?其實它是通過vm.$set方法來實現的,vm.$set方法實際上是調用了Observer類的set方法。下面是Observer類的set方法的簡化版本:

set(target, key, value) {
let ob = target.__ob__
if (!ob) {
return
}
ob.dep.notify()
}

這個方法接收三個參數,target是要操作的對象,key是要修改的屬性名,value是要設置的值。在方法中,首先獲取到target對象的Observer實例,然后通過ob.dep.notify()方法來觸發響應式數據的更新。

這里的ob.dep是一個Dep類的實例,它是一個依賴管理器。在Vue中,每個響應式數據都有對應的Dep實例,當數據發生變化時,就會通知依賴這個數據的觀察者對象進行更新。

在$set方法中,我們會為新增的屬性添加一個新的Dep實例,這個實例會被加入到它所屬對象的depMap中,從而實現了這個屬性的響應式更新。

總結一下,$set方法是Vue中一個常用的API,它能幫助我們實現響應式數據的增刪改查操作。其背后的原理是通過調用Observer類的set方法,在對象的依賴管理器中添加一個新的Dep實例,從而實現響應式的更新。

下一篇vue jiagou