微信小程序 - 避免在 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",
    });
  },
});
相关推荐
AI科技星5 小时前
数术工坊・八卷全书【本源创世终极版・万世定稿】
开发语言·网络·量子计算·拓扑学
雾沉川5 小时前
Visual C++ 运行库合集 v105.0 部署与故障排查技术指南
开发语言·c++·dll
码云骑士5 小时前
02-Python可变对象与不可变对象(上)-赋值陷阱与函数传参的暗坑
开发语言·python
布朗克1685 小时前
39 Spring Boot Web实战
前端·spring boot·后端·实战
gaohe26AIliuzeyu5 小时前
Java内部类
java·开发语言
AI科技星5 小时前
数术工坊・八卷全书(番外・实战升华副卷)【终极典藏定稿|完整无删减】
c语言·开发语言·网络·量子计算·agi
丘山望岳6 小时前
剑起霜华——平衡二叉树(AVL树 )精讲
开发语言·数据结构·c++
万岳科技系统开发6 小时前
教育培训小程序搭建实战:打造一体化教学服务平台
小程序
yyuuuzz6 小时前
云服务器软件部署的几个常见问题
运维·服务器·开发语言·网络·云计算·php·apache
z落落6 小时前
Timer与DateTimePicker:控件使用全解析
开发语言·c#