摘要:通常寫法是,上述情況里中的屬性可以直接監(jiān)聽,但是如果需要監(jiān)聽的數(shù)據(jù)是對(duì)象內(nèi)的某一屬性值的變化,直接對(duì)象是檢測(cè)不到變化的,這是因?yàn)檫@個(gè)對(duì)象的指向并沒有發(fā)生改變。不過這樣會(huì)造成更多的性能開銷,尤其是對(duì)象里面屬性過多,結(jié)構(gòu)嵌套過深的時(shí)候。
vue提供了watch方法,用于監(jiān)聽實(shí)例內(nèi)data數(shù)據(jù)的變化。通常寫法是:
new Vue({ data: { count: 10, blog:{ title:"my-blog", categories:[] } }, watch: { count: function (newval, oldVal) { console.log(`new: %s, old: %s`, newVal, oldVal); } } })
上述情況里data中的count屬性可以直接監(jiān)聽,但是如果需要監(jiān)聽的數(shù)據(jù)是對(duì)象內(nèi)的某一屬性值的變化,直接watch對(duì)象blog是檢測(cè)不到變化的,這是因?yàn)?b>blog這個(gè)對(duì)象的指向并沒有發(fā)生改變。有幾個(gè)解決方法
1.深度監(jiān)測(cè)new Vue({ data: { count: 10, blog:{ title:"my-blog", categories:[] } }, watch: { blog:{ handler(newVal,oldVal){ console.log(`new: ${newVal}, old: ${oldVal}`); }, deep:true } } })
里面的deep設(shè)為了true,這樣的話,如果修改了這個(gè)blog中的任何一個(gè)屬性,都會(huì)執(zhí)行handler這個(gè)方法。不過這樣會(huì)造成更多的性能開銷,尤其是對(duì)象里面屬性過多,結(jié)構(gòu)嵌套過深的時(shí)候。而且有時(shí)候我們就只想關(guān)心這個(gè)對(duì)象中的某個(gè)特定屬性,這個(gè)時(shí)候可以這樣
2.用字符串來表示對(duì)象的屬性調(diào)用new Vue({ data: { count: 10, blog:{ title:"my-blog", categories:[] } }, watch: { "blog.categories"(newVal, oldVal) { console.log(`new:${newVal}, old:${oldVal}`); }, } })3.使用computed計(jì)算屬性
new Vue({ data: { count: 10, blog:{ title:"my-blog", categories:[] } }, computed: { categories() { return this.blog.categories; } }, watch: { categories(newVal, oldVal) { console.log(`new:${newVal}, old:${oldVal}`); }, }, })Reference
計(jì)算屬性和偵聽器 — Vue.js
vue watch對(duì)象內(nèi)的屬性監(jiān)聽
Vue使用watch監(jiān)聽一個(gè)對(duì)象中的屬性
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/101498.html
摘要:組件中使用定時(shí)器及銷毀問題如果我們?cè)陧撁嬷惺褂昧艘粋€(gè)定時(shí)器,當(dāng)從頁面跳轉(zhuǎn)到頁面時(shí),如果不手動(dòng)清除這個(gè)定時(shí)器,那么它仍舊會(huì)執(zhí)行,這不是我們所期望的。 公司年初開始從jquery轉(zhuǎn)型到vue開發(fā),思想上從jquery的操作DOM到vue的操作數(shù)據(jù),剛開始還不太習(xí)慣,但用了一段時(shí)間發(fā)現(xiàn)確實(shí)比較方便。在剛開始用vue的時(shí)候,也踩了一些坑,現(xiàn)在分享出來,供剛?cè)腴T上手開發(fā)vue的朋友參考,都是一些...
摘要:寫文章不容易,點(diǎn)個(gè)贊唄兄弟專注源碼分享,文章分為白話版和源碼版,白話版助于理解工作原理,源碼版助于了解內(nèi)部詳情,讓我們一起學(xué)習(xí)吧研究基于版本如果你覺得排版難看,請(qǐng)點(diǎn)擊下面鏈接或者拉到下面關(guān)注公眾號(hào)也可以吧原理源碼版今天繼續(xù)探索源碼,廢話不 寫文章不容易,點(diǎn)個(gè)贊唄兄弟專注 Vue 源碼分享,文章分為白話版和 源碼版,白話版助于理解工作原理,源碼版助于了解內(nèi)部詳情,讓我們一起學(xué)習(xí)吧研究基于...
摘要:而是在初始化時(shí),在讀取了監(jiān)聽的數(shù)據(jù)的值之后,便立即調(diào)用一遍你設(shè)置的監(jiān)聽回調(diào),然后傳入剛讀取的值設(shè)置了時(shí),如何工作我們都知道有一個(gè)選項(xiàng),是用來深度監(jiān)聽的。 寫文章不容易,點(diǎn)個(gè)贊唄兄弟專注 Vue 源碼分享,文章分為白話版和 源碼版,白話版助于理解工作原理,源碼版助于了解內(nèi)部詳情,讓我們一起學(xué)習(xí)吧研究基于 Vue版本 【2.5.17】 如果你覺得排版難看,請(qǐng)點(diǎn)擊 下面鏈接 或者 拉到 下...
摘要:之對(duì)基礎(chǔ)理解構(gòu)造器是一個(gè)構(gòu)造函數(shù),編程中稱之為構(gòu)造器每一個(gè)都是一個(gè)構(gòu)造函數(shù)的實(shí)例,這個(gè)過程叫做實(shí)例化構(gòu)造函數(shù)需要將其實(shí)例化后才會(huì)啟用構(gòu)造器要求實(shí)例化時(shí)需要傳入一個(gè)選項(xiàng)對(duì)象組件其實(shí)都是被擴(kuò)展的實(shí)例。 vue.js 之 對(duì)vue.js基礎(chǔ)理解 Vue構(gòu)造器 1 . Vue.js是一個(gè)構(gòu)造函數(shù),編程中稱之為構(gòu)造器 2 . 每一個(gè)new Vue() 都是一個(gè)Vue構(gòu)造函數(shù)的實(shí)例,這個(gè)過程叫...
摘要:采用了新舊的對(duì)比,獲取差異的,最后一次性的更新到真實(shí)上。對(duì)基本屬性進(jìn)行監(jiān)聽對(duì)對(duì)象進(jìn)行監(jiān)聽對(duì)對(duì)象某一個(gè)屬性監(jiān)聽監(jiān)聽自定義指令全局指令,第一個(gè)參數(shù)是指令名,第二個(gè)參數(shù)是一個(gè)對(duì)象,對(duì)象內(nèi)部有個(gè)的函數(shù),函數(shù)里有這個(gè)參數(shù),表示綁定了這個(gè)指令的元素。 11.vue 虛擬DOM的理解 Web界面由DOM樹(樹的意思是數(shù)據(jù)結(jié)構(gòu))來構(gòu)建,當(dāng)其中一部分發(fā)生變化時(shí),其實(shí)就是對(duì)應(yīng)某個(gè)DOM節(jié)點(diǎn)發(fā)生了變化,??...
閱讀 2410·2021-11-19 09:40
閱讀 3575·2021-10-12 10:12
閱讀 1883·2021-09-22 15:04
閱讀 2898·2021-09-02 09:53
閱讀 761·2019-08-29 11:03
閱讀 1122·2019-08-28 18:11
閱讀 1724·2019-08-23 15:28
閱讀 3580·2019-08-23 15:05