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ā)生改變,再次訪問(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-quill-editor插入圖片路徑太長(zhǎng)問(wèn)題解決方法
這篇文章主要介紹了vue-quill-editor插入圖片路徑太長(zhǎng)問(wèn)題解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
Vue配合iView實(shí)現(xiàn)省市二級(jí)聯(lián)動(dòng)的示例代碼
本篇文章主要介紹了Vue配合iView實(shí)現(xiàn)省市二級(jí)聯(lián)動(dòng)的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
vue3界面使用router及使用watch監(jiān)聽(tīng)router的改變
vue2中使用router非常簡(jiǎn)單,但是vue3中略微有些改變,通過(guò)本文講解下他的改變,對(duì)vue3?watch監(jiān)聽(tīng)router相關(guān)知識(shí)感興趣的朋友一起看看吧2022-11-11
使用vue打包時(shí)vendor文件過(guò)大或者是app.js文件很大的問(wèn)題
這篇文章主要介紹了使用vue打包時(shí)vendor文件過(guò)大或者是app.js文件很大問(wèn)題的解決方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-06-06
詳解Vue3?父組件調(diào)用子組件方法($refs?在setup()、<script?setup>?中使用)
這篇文章主要介紹了Vue3?父組件調(diào)用子組件方法($refs?在setup()、<script?setup>?中使用),在 vue2 中 ref 被用來(lái)獲取對(duì)應(yīng)的子元素,然后調(diào)用子元素內(nèi)部的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08
vue實(shí)現(xiàn)左右滑動(dòng)效果實(shí)例代碼
左右滾動(dòng)的效果,在日常開(kāi)發(fā)中比較常見(jiàn),這篇文章主要給大家介紹了關(guān)于vue實(shí)現(xiàn)左右滑動(dòng)效果的相關(guān)資料,需要的朋友可以參考下2021-05-05

