收藏
回答

小程序js的data初始化问题?


碰到一个问题

app.globalData的代码如下:
 globalData: {
      id:0,
    }

当在A页面设置data
data: {
    idapp.globalData.id
},

在B页面给app.globalData.id赋值后跳转到A页面
 
    app.globalData.id=100
    wx.navigateTo({
      url: 'A',
    })

在A页面分别打印
 onShow: function () {
    console.log(app.globalData.id);
    console.log(this.data.id);
  },

输出结果为:

100
0


哪位大佬能告诉一下 原因么  万分感谢





最后一次编辑于  04-22
回答关注问题邀请回答
收藏

2 个回答

  • Mixchain 俞哄哄🧟
    Mixchain 俞哄哄🧟
    04-22

    你可以再A页面在生命周期中进行赋值

     this.setData({
         id:app.globalData.id
       })
    

    若有帮助请帮忙点个"有用"谢谢↓↓

    04-22
    有用 2
    回复 3
    • 喵!
      喵!
      04-22
      这个是可以 就是有点想明白为什么会这样
      04-22
      回复
    • Mixchain 俞哄哄🧟
      Mixchain 俞哄哄🧟
      04-22回复喵!
      我这么认为的(可能不正确就是讨论下)
      data只在页面初始化一次你跳转回来的时候页面上的数据没有重新初始化导致的
      04-22
      回复
    • 喵!
      喵!
      04-22回复Mixchain 俞哄哄🧟
      因为是用的navigateTo跳转的 会执行A的onLoad以及路由栈里面也会出现新的A.  data却没有按照最新globalData的数据初始化 ,就觉得很不好理解
      04-22
      回复
  • peng
    peng
    04-22

    感觉和路由有关系,切换到A时,A打开了原先的。https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/route.html

    04-22
    有用
    回复 2
    • 喵!
      喵!
      04-22
      但是路由栈里 会有两个A应该是新注册了一个A的
      04-22
      回复
    • 可乐飞冰
      可乐飞冰
      06-15
      跟路由没关系,就算是组件里使用的data字段,也会有这个问题,就算所有组件或者所有页面都不在栈里,最后重新进去结果还是第一次进的结果,这个我也遇到了,目测是因为data字段用了一个不确定的值,页面第一次进去初始化data之后,下次进去可能去的是上一次的值,即data被缓存了
      06-15
      回复
登录 后发表内容
问题标签