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