vue computed 與 watch 區別
阿新 • • 發佈:2018-11-26
1、watch
一個物件,鍵是需要觀察的表示式,值是對應回撥函式。值也可以是方法名,或者包含選項的物件。Vue 例項將會在例項化時呼叫 $watch()
,遍歷 watch 物件的每一個屬性
html:
<div> <input type="text" v-model="firstAge" /> <input type="text" v-model="lastAge" /> <input type="text" v-model="sumAge" /> </div>
js:
return{
firstAge:'10',
lastAge:'20',
sumAge:'10 20'
}
watch:{
firstAge: function(val){
this.sumAge = val + this.lastAge;
},
lastAge: function(val){
this.sumAge = this.firstAge + val;
}
}
2、computed
計算屬性將被混入到 Vue 例項中。所有 getter 和 setter 的 this 上下文自動地繫結為 Vue 例項。
計算屬性的結果會被快取,除非依賴的響應式屬性變化才會重新計算。注意,如果例項範疇之外的依賴 (比如非響應式的 not reactive) 是不會觸發計算屬性更新的。
js:
computed:{
sumAge:function(){
return this.firstAge + ' ' + this.lastAge;
}
}
總結:
計算屬性是計算屬性(computed),觀察是觀察( watch )。
計算屬性顧名思義就是通過其他變數計算得來的另一個屬性,fullName在它所依賴firstName,lastName這兩個變數變化時重新計算自己的值。
另外,計算屬性具有快取。計算屬性是基於它們的依賴進行快取的。計算屬性只有在它的相關依賴發生改變時才會重新求值。這就意味著只要 lastName和firstName都沒有發生改變,多次訪問 fullName計算屬性會立即返回之前的計算結果,而不必再次執行函式。
而觀察watch是觀察一個特定的值,當該值變化時執行特定的函式。例如分頁元件中,我們可以檢測頁碼執行獲取資料的函式。
詳細檢視文件,多研究文件資料 https://cn.vuejs.org/