微信小程序页面中监听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')

相关推荐
imperialeast2 小时前
创建WAV文件 韩文、德文、俄文等unicode音乐标签
windows·小程序
2601_949950634 小时前
错题总是反复错?用练题簿在线刷题,把复习重点找出来
人工智能·小程序·刷题·练习·小程序推荐
卓怡学长5 小时前
w194基于ssm新能源汽车充电系统小程序
java·小程序·intellij-idea
Ai-_Man6 小时前
您您这可以把Google AI Studio的多个会话比如说。左侧的多个会话一次性导出吗?不是单条会话里面的多次会对话。AI导出鸭
javascript·人工智能·ai·小程序·电脑
m0_5873830020 小时前
深度解析24小时自助健身房系统开发:从架构设计到落地部署
人工智能·小程序·数据挖掘·系统架构·需求分析
镭封1 天前
基于微信小程序的移动端AI配音工作流设计
人工智能·小程序·媒体
FX1317887KP_1 天前
PET口语备考攻略:发音、语法、表达,三个问题怎么同时解决
小程序·ket口语·pet口语·fce备考·剑桥英语
地球@+jdhb441 天前
企业私域运营新趋势:快手短视频平台跳转小程序企微卡片链路搭建成为商家运营重点
小程序·企业微信
程序鉴定师1 天前
2026年深圳小程序/App开发公司技术选型指南:从架构设计到交付标准全维度评估
java·小程序·uni-app·php·objective-c
Q26433650231 天前
【有源码】基于uni-app的旅游行程规划小程序-基于微信小程序的智慧文旅综合服务平台
java·微信小程序·小程序·uni-app·毕业设计·springboot·源代码