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

相关推荐
2501_915909061 天前
iOS 应用反调试技详解术 检测调试器的原理与防护实践
android·ios·小程序·https·uni-app·iphone·webview
00后程序员张1 天前
iOS加固技术路线全面解析:Bitcode模式、源码模式与汇编模式对比及爱加密优势
android·汇编·ios·小程序·uni-app·cocoa·iphone
海纳百川·纳海川1 天前
租房行业数字化:换个思路解决“老问题”
大数据·微信小程序·小程序
上海云盾-小余2 天前
CC 高频请求 + DDoS 流量攻击实战防御:全链路 WAF 流量清洗部署完整流程
网络·爬虫·安全·小程序·ddos
2501_916008892 天前
iOS IPA文件反编译与打包操作方法,拆包分析防护和加固打包
android·macos·ios·小程序·uni-app·cocoa·iphone
2301_810313182 天前
海外教育APP定制发展现状与开发选型核心要点解析
小程序·团队开发·软件需求
2501_915921432 天前
iOS手游安全反外挂解决方案:基于Xcode的加固混淆特色详解
android·安全·ios·小程序·uni-app·iphone·xcode
禾高网络2 天前
回收小程序在环保和商业领域发挥更大的作用
java·大数据·人工智能·小程序
2501_916007472 天前
iOS App分发教程 App Store、TestFlight 与 Ad Hoc 的配置与上传方法
android·ios·小程序·https·uni-app·iphone·webview
JasonMa1533 天前
从零搭建一个微信小程序活动管理平台(一):架构设计与技术选型
javascript·微信小程序·node.js