Vue學(xué)習(xí)筆記之計(jì)算屬性與偵聽(tīng)器用法
本文實(shí)例講述了Vue計(jì)算屬性與偵聽(tīng)器用法。分享給大家供大家參考,具體如下:
vue之所以加載速度非常塊,是因?yàn)樵跀?shù)據(jù)改變時(shí),它并不是將所有組件都刷新,而是在重用代碼的基礎(chǔ)上對(duì)發(fā)生改變的地方進(jìn)行渲染。同時(shí),還得益于計(jì)算屬性的使用:
1、計(jì)算屬性
像綁定普通屬性一樣在模板中綁定計(jì)算屬性。例如reverseName屬性依賴(lài)于firstName和lastName,當(dāng)firstName或lastName發(fā)生改變時(shí),依賴(lài)于它的 reverseName 也會(huì)更新。
利用函數(shù)方法也可以實(shí)現(xiàn)類(lèi)似的效果,不同的是計(jì)算屬性是基于它們的依賴(lài)進(jìn)行緩存的。只有在它的相關(guān)依賴(lài)發(fā)生改變時(shí)才會(huì)重新求值。這就意味著只要 firstName 還沒(méi)有發(fā)生改變,再次訪(fǎng)問(wèn) reversedName 計(jì)算屬性會(huì)立即返回之前的計(jì)算結(jié)果,而不必再次執(zhí)行函數(shù)。相比之下,每當(dāng)觸發(fā)重新渲染時(shí),調(diào)用方法將總會(huì)再次執(zhí)行函數(shù).
為什么需要緩存?假設(shè)我們有一個(gè)性能開(kāi)銷(xiāo)比較大的的計(jì)算屬性 A,它需要遍歷一個(gè)巨大的數(shù)組并做大量的計(jì)算。然后我們可能有其他的計(jì)算屬性 B 依賴(lài)于 A 。如果使用函數(shù),每獲得一次B就要調(diào)用一次函數(shù)進(jìn)行計(jì)算,造成很大開(kāi)銷(xiāo)!
計(jì)算屬性默認(rèn)為get方法,也可以設(shè)定set方法,接收傳入處理數(shù)據(jù)。例如傳入originalName,set方法對(duì)其進(jìn)行拆解并復(fù)制給firstName與lastName,并引起firstName與lastName改變,調(diào)用get()方法。
<div id="app"> <p>{{originalName}}</p> <p>{{reverseName}}</p> <button @click="deal()">反轉(zhuǎn)名字</button> </div>
let vue=new Vue({ el:'#app', data:{ firstName:'', lastName:'', originalName:"super tory" }, methods:{ deal(){ this.reverseName=this.originalName; } }, computed:{ //計(jì)算屬性鉤子 reverseName:{ set(string){ //通過(guò)set方法對(duì)傳入?yún)?shù)this.originalName進(jìn)行操作 let name=string.split(' '); this.firstName=name[1]; this.lastName=name[0]; }, get(){ //通過(guò)get方法返回值 return this.firstName+' '+this.lastName; } } } });
2、偵聽(tīng)器watch
在Vue中提供一個(gè)鉤子,偵聽(tīng)data中的某個(gè)變量是否改變,如果改變則執(zhí)行響應(yīng)函數(shù)。
<div id="app2"> <input v-model="listen"> </div>
let vue2=new Vue({ el:'#app2', data:{ listen:'' }, watch:{ //定義偵聽(tīng)器鉤子 listen:function () { //定義函數(shù)偵聽(tīng)listen的變化 console.log("input內(nèi)容發(fā)生改變"); } } });
希望本文所述對(duì)大家vue.js程序設(shè)計(jì)有所幫助。
相關(guān)文章
Vue-Router實(shí)現(xiàn)組件間跳轉(zhuǎn)的三種方法
這篇文章主要為大家詳細(xì)介紹了Vue-Router來(lái)實(shí)現(xiàn)組件間跳轉(zhuǎn)的三種方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11vue的全局變量和全局?jǐn)r截請(qǐng)求器的示例代碼
這篇文章主要介紹了vue的全局變量和全局?jǐn)r截請(qǐng)求器的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09詳解vue中的動(dòng)態(tài)組件component和keep-alive
這篇文章主要介紹了詳解vue中的動(dòng)態(tài)組件component和keep-alive的相關(guān)資料,這大家需要注意include屬性和exclude屬性只能用一個(gè),不能同時(shí)使用,本文給大家介紹的非常詳細(xì),需要的朋友參考下吧2023-11-11使用vue-infinite-scroll實(shí)現(xiàn)無(wú)限滾動(dòng)效果
vue-infinite-scroll插件可以無(wú)限滾動(dòng)實(shí)現(xiàn)加載更多,其作用是是當(dāng)滾動(dòng)條滾動(dòng)到距離底部的指定高度時(shí)觸發(fā)某個(gè)方法。這篇文章主要介紹了用vue-infinite-scroll實(shí)現(xiàn)無(wú)限滾動(dòng)效果,需要的朋友可以參考下2018-06-06vue2.0如何實(shí)現(xiàn)echarts餅圖(pie)效果展示
這篇文章主要介紹了vue2.0如何實(shí)現(xiàn)echarts餅圖(pie)效果展示,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10建立和維護(hù)大型 Vue.js 項(xiàng)目的 10 個(gè)最佳實(shí)踐
這篇文章小編要與大家分享的是建立和維護(hù)大型 Vue.js 項(xiàng)目的 10 個(gè)最佳實(shí)踐,需要的小伙伴請(qǐng)和小編一起學(xué)習(xí)下面文章的具體內(nèi)容吧2021-09-09Vue監(jiān)聽(tīng)數(shù)據(jù)對(duì)象變化源碼
這篇文章主要為大家詳細(xì)介紹了Vue監(jiān)聽(tīng)數(shù)據(jù)對(duì)象變化的源碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03vue3中ts語(yǔ)法使用element plus分頁(yè)組件警告錯(cuò)誤問(wèn)題
這篇文章主要介紹了vue3中ts語(yǔ)法使用element plus分頁(yè)組件警告錯(cuò)誤問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04Vue 實(shí)現(xiàn)從小到大的橫向滑動(dòng)效果詳解
這篇文章主要介紹了Vue 實(shí)現(xiàn)從小到大的橫向滑動(dòng)效果,結(jié)合實(shí)例形式詳細(xì)分析了vue.js橫向漸變滑動(dòng)效果的實(shí)現(xiàn)步驟、相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2019-10-10vue項(xiàng)目實(shí)現(xiàn)表單登錄頁(yè)保存賬號(hào)和密碼到cookie功能
這篇文章主要介紹了vue項(xiàng)目實(shí)現(xiàn)表單登錄頁(yè)保存賬號(hào)和密碼到cookie功能,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-08-08