微信小程序 - 避免在 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",
    });
  },
});
相关推荐
烬头882130 分钟前
React Native鸿蒙跨平台实现二维码联系人APP(QRCodeContactApp)
javascript·react native·react.js·ecmascript·harmonyos
pas13633 分钟前
40-mini-vue 实现三种联合类型
前端·javascript·vue.js
摇滚侠41 分钟前
2 小时快速入门 ES6 基础视频教程
前端·ecmascript·es6
2601_949833391 小时前
flutter_for_openharmony口腔护理app实战+预约管理实现
android·javascript·flutter
lly2024061 小时前
C 语言中的结构体
开发语言
JAVA+C语言1 小时前
如何优化 Java 多主机通信的性能?
java·开发语言·php
珑墨1 小时前
【Turbo】使用介绍
前端
军军君012 小时前
Three.js基础功能学习十三:太阳系实例上
前端·javascript·vue.js·学习·3d·前端框架·three
青岑CTF2 小时前
攻防世界-Ics-05-胎教版wp
开发语言·安全·web安全·网络安全·php
Li emily2 小时前
如何通过外汇API平台快速实现实时数据接入?
开发语言·python·api·fastapi·美股