微信小程序如何监听全局变量
导读:收集整理的这篇文章主要介绍了微信小程序如何监听全局变量,觉得挺不错的,现在分享给大家,也给大家做个参考。 最近工作上遇到一个问题,有个全局变量 red_heart,因为它在很多地方用到,...
收集整理的这篇文章主要介绍了微信小程序如何监听全局变量,觉得挺不错的,现在分享给大家,也给大家做个参考。 最近工作上遇到一个问题,有个全局变量 red_heart,因为它在很多地方用到,当它发生改变了,用到的地方也要改变。但是原生小程序并没有像Vue这种相关的做法。所以我就想自己实现一个全局变量改变,用到这个变量的地方也重新渲染。
开始吧
首先全局变量里肯定要先有这个 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,直接拿来用了。
害就这样了就做好啦!
总结
到此这篇关于微信小程序如何监听全局变量的文章就介绍到这了,更多相关小程序监听全局内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
您可能感兴趣的文章:- 微信小程序全局变量改变监听的实现方法
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 微信小程序如何监听全局变量
本文地址: https://pptw.com/jishu/595166.html
