微信小程序 - 避免在 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",
    });
  },
});
相关推荐
非凡ghost11 分钟前
AI修图不“造假“,摄影师的出片效率加速器
服务器·前端·人工智能·电脑
2601_9516152011 分钟前
网页设计模板源码 web前端模板网页源码下载
前端
mmsx11 分钟前
osmdroid 地图实战 03|地图的"分层世界":离线方案、图层模型与 Overlay 体系
android·前端
bug总结20 分钟前
uniapp 微信小程序分包规范
微信小程序·小程序·uni-app
quantdash_cc27 分钟前
量化数据源怎么选:稳定性、实时性和数据完整性到底该如何权衡?
开发语言·python·数据分析·量化交易·股票数据·quantdash
郭邯35 分钟前
从零到一:我用 AI 写了个复利计算器,顺便治好了我的"公式恐惧症"
前端
萧瑟余晖35 分钟前
Java深入解析篇五十四之对象模型详解
java·开发语言
Pointer Pursuit37 分钟前
C++11特性(二)
前端·c++·算法
天道kabuto43 分钟前
Vue3 升级踩坑:子组件 click 事件为什么会触发两次?
前端
Nayana44 分钟前
《Web 到 HarmonyOS》-- Ability、Stage、模块化与路由导航
前端