溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

偵聽對(duì)象 watch

發(fā)布時(shí)間:2020-07-13 05:18:34 來源:網(wǎng)絡(luò) 閱讀:186 作者:wx5a5f8671bdd15 欄目:web開發(fā)

處理依賴,Vue還提供了另外一種處理依賴的方法:偵聽對(duì)象。
再computed屬性里面,我們?cè)O(shè)置需要計(jì)算的屬性,而在函數(shù)里面設(shè)置計(jì)算這個(gè)屬性的邏輯,偵聽屬性采用的則是另外一種機(jī)制,把想要偵聽的屬性名稱設(shè)置為鍵,這里就是counter這個(gè)鍵,必須與屬性名稱相同,這里就是data屬性中的counter屬性,在函數(shù)中指定counter屬性變化時(shí)需要執(zhí)行的代碼,Vue會(huì)自動(dòng)把屬性變化之后的數(shù)值傳遞給該函數(shù),以允許我們對(duì)屬性變化做出反應(yīng),所以這里我也可以通過設(shè)置一個(gè)全局輸出變量來實(shí)現(xiàn),有時(shí)可能確實(shí)得這樣,比如屬性不能像這里這樣計(jì)算,然后再其它地方設(shè)置變量值,雖然這樣做也可以,但是我會(huì)馬上告訴你最佳方法還是盡量再允許的情況下多使用計(jì)算屬性,因?yàn)檫@樣做優(yōu)化最好,比如使用緩存等等,通過減少不必要的任務(wù),讓Vue允許更快,盡管有時(shí)候你需要對(duì)每一次變化做出反應(yīng),另外一個(gè)計(jì)算屬性不能實(shí)現(xiàn)的功能是,執(zhí)行異步任務(wù),計(jì)算屬性必須同步執(zhí)行,也就是說再compute的函數(shù)里面,必須立即返回一個(gè)返回值,中間不能訪問服務(wù)器或者執(zhí)行異步任務(wù),如果需要執(zhí)行異步任務(wù),或者像前面一樣,需要再屬性更新時(shí)執(zhí)行的代碼,那就不能用計(jì)算屬性來解決了。這時(shí)你就可以使用偵聽對(duì)象。比如你打算兩秒后充值counter屬性值,再watch:counter里面增加一個(gè)setTimeout()方法,注意,因?yàn)檫@個(gè)函數(shù)再回調(diào)內(nèi)的閉包里,所以必須再另外一個(gè)變量中存儲(chǔ)Vue實(shí)例,this讓我們可以方便第訪問實(shí)例中的各個(gè)屬性,但是它必須放在一個(gè)變量里,Vue實(shí)例的屬性以及其它的數(shù)據(jù),再Vue實(shí)例的默認(rèn)對(duì)象和函數(shù)里面都可以通過this直接訪問,但是再回調(diào)閉包里面則不行。

查看效果,改變counter值,但是兩秒后被充值,因?yàn)樵O(shè)置了偵聽對(duì)象,所以counter一變化就會(huì)調(diào)用函數(shù),執(zhí)行這部分代碼就可以訪問異步任務(wù)了。
偵聽對(duì)象   watch

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI