国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術(shù)文章
文章詳情頁

vue深度監(jiān)聽(監(jiān)聽對象和數(shù)組的改變)與立即執(zhí)行監(jiān)聽實(shí)例

瀏覽:101日期:2022-11-29 09:37:34

1.vue中監(jiān)聽對象數(shù)據(jù)屬性值的改變,可以使用深度監(jiān)聽

data () { return { form: { status: ’’, cpufrequency: ’’, systemstacksize: ’’, scalabilityclass: ’’ } } }, watch: { form: { // 深度監(jiān)聽 handler(val, oldVal){ console.log(’currentForm’,val, oldVal) // 但是這兩個(gè)值打印出來卻都是一樣的,因?yàn)樗鼈兊囊弥赶蛲粋€(gè)對象/數(shù)組 }, deep:true } }

注意:我們應(yīng)盡量避免在監(jiān)聽方法中更改當(dāng)前監(jiān)聽對象的屬性值,以免再次觸發(fā)監(jiān)聽函數(shù)

2.若只監(jiān)聽某個(gè)或部分屬性值的變化,則可以配合計(jì)算屬性computed來解決

data () { return { form: { status: ’’, cpufrequency: ’’, systemstacksize: ’’, scalabilityclass: ’’ } } }, computed: { status() { return this.form.status } }, watch: { status() { console.log(’currentVal’, this.status) } }

當(dāng)然,上面這種方法會(huì)多出一個(gè)計(jì)算屬性,并不是最好的方法,通過查看官方api,其實(shí)還有一種方法:

data () { return { form: { status: ’’, cpufrequency: ’’, systemstacksize: ’’, scalabilityclass: ’’ } } }, watch: { ’form.status’(val, oldVal) { console.log(’currentVal’, val) } }

3.取消監(jiān)聽

var unwatch = vm.$watch(’a’, cb) // 返回一個(gè)取消監(jiān)聽函數(shù)

unwatch() // 取消觀察函數(shù)

4.立即觸發(fā)監(jiān)聽

我們有時(shí)會(huì)有這個(gè)需求,在頁面初始化時(shí)執(zhí)行某個(gè)監(jiān)聽。因此,我們可能會(huì)在 created 中去調(diào)用需要執(zhí)行的監(jiān)聽代碼,但現(xiàn)在我們可以使用 immediate 來實(shí)現(xiàn)這個(gè)功能。

watch: { ’form.status’() { handler(val, oldVal) { // 執(zhí)行一些操作 }, immediate: true } }

補(bǔ)充知識:vue watch監(jiān)聽數(shù)據(jù),新老值一樣?讓其不一樣吧!

我就廢話不多說了,大家還是直接看代碼吧~

data:{ testData:{ dataInfo:{a: ’我是a’,b: ’我是b’ } } }, watch: { testData: { handler: (val, olVal) => { console.log(’我變化了’, val, olVal) }, deep: true } }

如果testData發(fā)生了變化,就會(huì)打印出val,olVal,但是他們打印出來的結(jié)果都是一樣的,因?yàn)閿?shù)據(jù)同源。雖然可以監(jiān)聽到他的變化,但是要比較數(shù)據(jù)差異就不行了。如果想要得到不同的值可以結(jié)合計(jì)算屬性。

data:{ testData:{ dataInfo:{a: ’我是a’,b: ’我是b’ } } }, watch: { testDataNew: { handler: (val, olVal) => { console.log(’我變化了’, val, olVal) }, deep: true } }, computed: { testDataNew() { return JSON.parse(JSON.stringify(this.testData)) } }

以上這篇vue深度監(jiān)聽(監(jiān)聽對象和數(shù)組的改變)與立即執(zhí)行監(jiān)聽實(shí)例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Vue
相關(guān)文章:
主站蜘蛛池模板: 北票市| 昭平县| 萝北县| 扎兰屯市| 大同县| 叶城县| 开原市| 简阳市| 江永县| 志丹县| 章丘市| 三门峡市| 武城县| 报价| 祁东县| 南安市| 南靖县| 牙克石市| 武陟县| 额济纳旗| 台安县| 仪征市| 延津县| 双流县| 正阳县| 长岛县| 铜鼓县| 岳阳市| 柳林县| 茂名市| 株洲市| 广灵县| 扶沟县| 巴楚县| 商城县| 德江县| 祁连县| 安仁县| 麻城市| 黄浦区| 宝清县|