微信小程序 - 避免在 data 初始化中引用全局变量

html 复制代码
<view class="page-container">
    <view>{{ testValue }}</view>
    <button bindtap="changeTestValue">change</button>
</view>
js 复制代码
const app = getApp();

Page({
  data: {
    testValue: app.globalData.testValue,
  },

  onLoad() {
    console.log("testValue:", this.data.testValue);
  },

  changeTestValue() {
    app.globalData.testValue = "new value";
    this.setData({
      testValue: "new value",
    });
  },
});
  1. 第一次进入页面时,会打印与显示出 old value,点击 change 按钮后,会显示出 new value

  2. 但是,第二次进入页面时,仍然打印与显示出 old value

  • 避免在 data 初始化中引用全局变量,应该在 onLoad 函数中设置
js 复制代码
const app = getApp();

Page({
  data: {
    testValue: null,
  },

  onLoad() {
    this.setData({
      testValue: app.globalData.testValue,
    });
    console.log("testValue:", this.data.testValue);
  },

  changeTestValue() {
    app.globalData.testValue = "new value";
    this.setData({
      testValue: "new value",
    });
  },
});
相关推荐
白帽攻防录6 小时前
SRC 挖洞:PostScript 打印机驱动双 RCE,打印服务器怎么变成内网跳板
开发语言·网络安全·php·内网安全
十年Java程序媛6 小时前
Java枚举Enum完整教程|替代静态常量,开发与面试要点
java·开发语言·spring boot·后端·面试
2603_965148117 小时前
电商选品调研:通过关键词搜索API获取市场热销商品,结合商品详情API分析竞品卖点与定价
开发语言·数据库·人工智能·python·信息可视化
lpfasd1237 小时前
node-sass 停止维护!老项目迁移 Dart Sass 完整教程
前端·rust·sass
xixiaoyunya7 小时前
Python 异步编程入门:用 asyncio 轻松实现并发任务
开发语言·python·php
学逆向的8 小时前
C 循环结构的执行效率分析
c语言·开发语言·数据结构·网络安全
小坏讲微服务8 小时前
刚发布一个月的JDK 27,为什么我建议你立刻升级?
java·开发语言·spring boot·spring·架构·求职招聘·springboot4
Data analyse4569 小时前
rnweb 回放数据量太大怎么办?分片存储与断点续传的实现思路
前端·网络·算法·数据分析
xiaogai_gai9 小时前
金蝶收料通知单查询策略实战教程:从源系统拉取到中间层落地的完整路径
java·前端·数据库
打工仔折腾 AI10 小时前
用 Dashlet 把极空间 NAS 服务入口整理成统一导航首页的实践
java·开发语言·人工智能·后端·python·rpc·ai agent 实战