每个页面中的js文件中的data是在什么时候初始化的?是在小程序启动时还是在每个页面加载时?
发布于 4 年前 作者 kxu 7029 次浏览 来自 问答

业务场景:小程序启动---->进入启动页面(该页面异步请求,根据返回的用户角色决定所有其他页面的主题版本)---->其他页面

//启动页面伪代码:
onload:function(){
     wx.request({
      url: '登录接口地址', //仅为示例,并非真实的接口地址
      data: '入参'
      header: {
      'content-type': 'application/json' // 默认值
      },
      success (res) {
        //返回用户角色
        console.log(res.data)
        if(res.data.role = 'a'){
            app.globalData.themeColor = {--bg-color:red;}
        }else if(res.data.role = 'b'){
            app.globalData.themeColor = {--bg-color:green;}
        }else if(res.data.role = 'c'){
            app.globalData.themeColor = {--bg-color:blue;}
        }else {
            app.globalData.themeColor = {--bg-color: white;}
        }
      }
    })
 }

//about页等其他页面
Page({
  data:{
     themeColor:app.globalData.themeColor
  }
})


问题:进入其他页面时data中的themeColor竟然取不到值,想问下官方开发人员,所有页面的data的数据初始化是在哪个阶段完成的呢,为什么我在启动页已经设置上了,但是在其他页面的data中取不到值,只能在每个页面的onload中通过setData({themeColor:app.globalData.themeColor})才可以。


1 回复

是在app启动的时候,页面文件加载的时候就初始化好了。。比如你可以找个压根没显示的页面,在Page()外面 console.log随便打印个啥,然后你就知道是啥时候初始化的 data对象了。当然你更可以直接打个debugger,进去看看是什么时候

回到顶部