首页前端开发JavaScript微信小程序如何监听全局变量

微信小程序如何监听全局变量

时间2024-02-01 08:34:02发布访客分类JavaScript浏览197
导读:收集整理的这篇文章主要介绍了微信小程序如何监听全局变量,觉得挺不错的,现在分享给大家,也给大家做个参考。 最近工作上遇到一个问题,有个全局变量 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核实处理,我们将尽快回复您,谢谢合作!

上一篇: React ref的使用示例下一篇:React useMemo和useCallback的使...猜你在找的JavaScript相关文章 html font标签如何设置字体大小?html font标签属性用法介绍2022-05-16vue3+TypeScript+vue-router的使用方法2022-04-16vue3获取当前路由地址2022-04-16如何利用React实现图片识别App2022-04-16JavaScript展开运算符和剩余运算符的区别详解2022-04-16微信小程序中使用vant框架的具体步骤2022-04-16Vue elementUI表单嵌套表格并对每行进行校验详解2022-04-16如何利用Typescript封装本地存储2022-04-16微信小程序中wxs文件的一些妙用分享2022-04-16JavaScript的Set数据结构详解2022-04-16 其他相关热搜词更多phpjavapython程序员loadpost-format-gallery

若转载请注明出处: 微信小程序如何监听全局变量
本文地址: https://pptw.com/jishu/595166.html
asp.net中将某字符串切割成阵列并排序列出 asp.net列出某文件夹下的所有文档,包括子目录下的档案

游客 回复需填写必要信息