computed/watch
computed
- 沒有自己的屬性是藉由data的屬性計算而來
- 底層借助Object.defineProperty的getter與setter
- 初次讀取的時候會執行一次getter
- 依賴的data屬性變化時候也會執行getter
- 計算屬性要修改要使用setter來修改
watch
- Vue中的watch默認不監聽物件裡面的屬性要開啟deep:true才行
- Vue自身可以監測到物件裡面屬性值的改變但是watch不行
寫法
#配置項設定監聽
watch:{
xxx:{
handler(nV,oV){
},
immediate:true, 第一次就執行
deep:true //深度監聽預設為false如果要監聽物件裡面的屬性變化就要開啟這個
},
//這樣也可以監聽到物件裡面的某個屬性
'xxx.x':{
handler(nV,oV){
},
}
}
#動態監聽
vm.$watch('newXXX',{
handler(nV,oV){
},
immediate:true, 第一次就執行
deep:true //深度監聽
})
#簡寫
watch:{
xxx(nV,oV){}
}
computed vs watch
- computed能實現的功能watch也可以實現
- watch能實現的功能computed不一定能實現例如:一些非同步操作