Vue裏面的監聽很方便,雖然很消耗資源,但是有的時候卻必須要用到,這裏帶大家在小程序中實現簡單的監聽
我的案例是寫在component組件裏面的,當然page頁面也是一樣的,把 attached 換成 onload
把 watch 直接寫入 Page 裏面即可
Component({
properties: {},
data: {
// 這裏是一些組件內部數據
ze:'123',
dd:'312'
},
methods: {
watch(){
return{
ze:(val) => {
console.log(val)
}
}
},
btns(){
this.setData({ze:321})
}
},
attached(){ //類似於beforeMounted 組件掛載前
Object.keys(this.watch()).some(item => {
Object.defineProperty(this.data,item,{
set:this.watch()[item]
})
})
}
})
需要監聽的變量,和vue的寫法一樣,寫入watch中,不過,這裏要加到 return 中即可 例如 例子 ze
如果監聽需要調用到 this.setData() 把監聽的函數結構換成箭頭函數 例如 例子 ze
總的來說沒有什麼技術難點,主要依靠原生的Object APi Object.defineProperty() 沒有學過的可以看下