微信小程序如何监听全局变量变化?
- 内容介绍
- 文章标签
- 相关推荐
本文共计582个文字,预计阅读时间需要3分钟。
最近工作中遇到一个问题,有一个全局变量`red_heart`,因为用得地方很多,一旦它发生变化,相关的代码也需要修改。但原生小程序并没有像Vue那样的相关做法。所以我想自己实现一个。
最近工作上遇到一个问题,有个全局变量 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,简称依赖收集。
本文共计582个文字,预计阅读时间需要3分钟。
最近工作中遇到一个问题,有一个全局变量`red_heart`,因为用得地方很多,一旦它发生变化,相关的代码也需要修改。但原生小程序并没有像Vue那样的相关做法。所以我想自己实现一个。
最近工作上遇到一个问题,有个全局变量 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,简称依赖收集。

