1. 程式人生 > 其它 >計算屬性computed

計算屬性computed

技術標籤:vue

計算屬性 computed

computed(多個值變化,影響到一個結果) 屬性的結果會被快取,除非依賴的響應式屬性變化才會重新計算。他是函式主要當作屬性來使用,邏輯簡單。

computed是屬性呼叫,而methods是函式呼叫
computed帶有快取功能,而methods不是
computed可以監控物件,而methods不是

computed:{//前面的數值變化影響到結果---》get
			'fullname':function(){
					return this.firstname+this.lastname;
			}
				fullname(){
					return this.firstname+this.lastname;
				}
			}
       

       fullname:{ //雙向數值修改(前面變化影響到後面,後面變化影響到前面)  get+set
					get:function(){
						return this.firstname+"-"+this.lastname;
					},
					set:function(newval){
						//console.log(newval);
						var arr=newval.split('-');
						//console.log(arr);
						this.firstname=arr[0];
						this.lastname=arr[1];
					}
				}

監視屬性 watch

watch(一個值變化,影響到多個結果改變)一個物件,鍵是需要觀察的表示式,值是對應回撥函式。主要用來監聽某些特定資料的變化(watch監控路由物件‘$route’),從而進行某些具體的業務邏輯操作;可以看作是computedmethods的結合體;

watch可以監控物件,而methods不是

Watch:{
            'obj':{
						handler(newval){
							console.log(newval);
						},
						deep:true,
						immediate: true
					}
}

watch和computed均可以監控程式設計師想要監控的物件,

當這些物件發生改變之後,可以觸發回撥函式做一些邏輯處理

watch監控自身屬性變化(重新編譯,效能差)
watch監控路由物件(一個值變化,影響到多個結果改變)
資料變化時來執行非同步操作,這時watch是非常有用的。

計算屬性computed的特點(多個值變化,影響到一個結果)
計算屬性會依賴於他使用的data中的屬性,只要是依賴的屬性值有改變,則自動重新呼叫一下計算屬性;如果他所依賴的這些屬性值沒有發生改變,那麼計算屬性的值是從快取中來的,而不是重新編譯,那麼效能要高一些,所以vue中儘可能使用computed替代watch