微信小程序监听全局变量 变化

场景:微信小程序首页页面渲染快,wx.login执行慢,导致首页中变量不是最新的

app.js

watch: function (method) {
    var obj = this.globalData
    Object.defineProperty(obj, 'IsAuthorization', {
      configurable: true,
      enumerable: true,
      set: function (value) {
        this._name = value;
        method(value);
      },
      get: function(){
        return this._name
      }
     })
  },
  globalData: {
    userInfo: null,
    openid: '', // openid
    wx_token: '', // wx_token
    IsAuthorization: false, // 是否绑定(是否授权)
  }

index.js

onLoad:function(options){
    let that = this;
    getApp().watch(that.watchBack)
  },
  watchBack: function (value){
    this.setData({
      IsAuthorization: value
    })
  },

 

微信小程序中的全局变量,通常是指那些存储在`app.json`文件的`window`对象下的数据,它们在整个小程序生命周期内都是共享的。如果全局变量的值发生了变化,为了实现实时刷新当前页面,你需要采用特定的方式来触发更新。 1. **setData方法**:如果你是在页面内部修改了全局变量,可以使用`this.setData()`方法,它会自动触发组件的渲染,导致页面内容更新。记得要在适当的地方触发这个方法,比如在事件处理函数里。 ```javascript globalData.myVar = 'newValue'; this.setData({ myGlobalVar: globalData.myVar }); ``` 2. **watch属性监听**:对于一些需要实时监控变化的情况,可以设置`watch`来观察某个字段的变化,并在发生变化时执行相应操作。 ```javascript Page({ data: { ..., watchVar: wx.getStorageSync('myVar') || '' }, watch: { watchVar(newVal, oldVal) { if (newVal !== oldVal) { // 更新页面 this.setData({ ... }); } } }, }) ``` 3. **定时刷新**:如果不需要立即响应而是间隔一定时间更新,也可以考虑使用`setInterval`或`setTimeout`。 然而,要注意的是,频繁地手动触发页面刷新可能会消耗过多资源,影响用户体验。在设计时应尽量避免不必要的全局变量更新,只在真正需要的时候触发页面刷新。此外,微信小程序有自身的生命周期管理规则,某些页面可能无法直接访问到全局变量,这也要具体情况具体分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值