微信小程序页面中监听globalData数据变化

问题: 微信小程序app.ts中声明了id变量, 如何在pages/index.ts中监听id值变化了

  1. 在 app.ts 增加全局 id 变更订阅机制
csharp 复制代码
App({
	globalData: {
    id: '',
  },
  setId(id: string) {
    this.globalData.id = id
    const list = idListeners.slice()
    for (let i = 0; i < list.length; i++) {
      list[i](id)
    }
  },
  onIdChange(cb: (id: string) => void) {
    idListeners.push(cb)
  },
  offIdChange(cb: (id: string) => void) {
    const i = idListeners.indexOf(cb)
    if (i > -1) idListeners.splice(i, 1)
  }
})
  1. 在 index 页面注册监听并同步组件数据
csharp 复制代码
lifetimes: {
    attached() {
      const fn = (id: string) => {
        console.log('id change')
        this.setData({ id })
      }
      ;(this as any)._idListener = fn
      app.onIdChange(fn)
      this.setData({ id: app.globalData.id })
    },
    detached() {
      const fn = (this as any)._idListener
      if (fn) app.offIdChange(fn)
    }
  }

验证:

添加事件handleChangeId() { const id = Math.random() * 1000; app.setId(id.toString()) },

触发handleChangeId事件, 控制台此时就会打印console.log('id change')

相关推荐
用户4324281061141 天前
微信小程序从0到1接入微信支付的完整攻略
微信小程序
spmcor3 天前
微信小程序 setStorageSync 踩坑实录:别让"顺手一存"变成"隐形炸弹"
微信小程序
用户4324281061143 天前
小程序埋点设计规范:如何设计可扩展的数据采集体系
微信小程序
m0_526119404 天前
iconfont我修改好颜色,但是在小程序项目是黑色的
小程序
2601_956743684 天前
2026 上海小程序开发甄选:源码、云函数、跨端兼容技术评判
小程序·开发经验·上海
IT_张三4 天前
CSDN-项目分享-暑期备考小程序
小程序
IsJunJianXin4 天前
pdd小程序 cdp 保存响应体
linux·服务器·小程序·pdd小程序·拼多多响应体解密·小程序cdp·拼多多rpc取响应体
Geek_Vison4 天前
APP瘦身实战:从80MB+砍到15MB——基于小程序容器技术剥离APP非核心业务的实践分享
小程序·uni-app·mpaas
weikecms4 天前
聚合返利CPS小程序快速搭建教程
人工智能·微信·小程序
Haibakeji5 天前
长沙餐饮门店点餐配送小程序定制开发
大数据·小程序