這篇文章主要講解了“微信小程序怎樣監聽全局變量”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“微信小程序怎樣監聽全局變量”吧!

開始吧
首先全局變量里肯定要先有這個 red_heart
globalData: {
red_heart:0,
},然后要在onLaunch方法里給全局變量加一個Proxy代理。
Proxy很好理解,懂得都懂。
this.globalData = new Proxy(this.globalData, {
get(target, key){
return target[key];
},
set:(target, key, value)=>{
if(key === "red_heart"){
this.globalDep.RedHeartDep.notifuy()
}
return Reflect.set(target, key, value);
}
});主要看set方法里面有一個this.globalDep.RedHeartDep.notifuy(),這個是啥。這是我在全局創建的一個Dep,簡稱依賴收集。
代碼
globalDep:{
RedHeartDep:{
subs:[],
addSub(watch){
this.subs.push(watch)
},
removeWatch(id){
this.subs = this.subs.filter((item)=>{
return item.id != id
})
},
notifuy(){
setTimeout(()=>{
this.subs.forEach(w=>w.update())
},0)
}
}
}subs是一個數組,用來收集依賴,addSub和removeWatch,notifuy是用來告訴這個東西要去更新了。
那現在還有一個問題,就是這個依賴在哪里添加呢,當然是在用到的地方添加,就是組件創建的時候。
附上組件js全部代碼:
const app = getApp()
Component({
properties: {
},
data: {
red_heart:0
},
lifetimes:{
attached(){
let watch = {
id:this.__wxExparserNodeId__,
update:()=>{
this.setData({
red_heart:app.globalData.red_heart
})
}
}
app.globalDep.RedHeartDep.addSub(watch)
app.globalData.red_heart = app.globalData.red_heart
},
detached(){
app.globalDep.RedHeartDep.removeWatch(this.__wxExparserNodeId__)
}
},
methods: {
handClick(){
app.globalData.red_heart++
console.log(app.globalData)
}
}
})在attached上添加依賴,在組件銷毀的時候也不要忘記把依賴刪除,這個id是小程序的一個編譯id,直接拿來用了。
害就這樣了就做好啦!
總結
感謝各位的閱讀,以上就是“微信小程序怎樣監聽全局變量”的內容了,經過本文的學習后,相信大家對微信小程序怎樣監聽全局變量這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。