• 小程序项目别的页面初始化拿到的值为两种状态(已解决)


    小程序项目别的页面初始化拿到的值为两种状态,其他页面拿不到app.js全局globalData下全局的cookie

    app.js文件

    onLaunch: function () {
        console.log('app-onLaunch')
        this.getUserInfo();
       
      },
      onShow:function(){
        console.log('app-onShow')
      },
      // 获取用户信息,登录
    
      getUserInfo: function (callBack) {
        let that = this;
        if (this.globalData.userInfo) {
          typeof cb == 'function' && cb(this.globalData.userInfo)
        } else {
          wx.login({
            success: function (res1) {
              console.log('res11111111111111111',res1);
              if (res1.code) {
                //授权
                wx.getUserInfo({
                  success: res => {
                    // 可以将 res 发送给后台解码出 unionId
                    //console.log('ryy-getUserInfo', res.userInfo)
                    that.globalData.userInfo = res.userInfo
    
                    wx.request({
                      url: that.config.HOST + '/user/userLogin.do',
                      data: {
                        code: res1.code, //返回openid
                        headimgurl: res.userInfo.avatarUrl,
                        nickname: res.userInfo.nickName,
                        city: res.userInfo.city,
                        appid: that.globalData.AppId,
                        province: res.userInfo.province,
                        shop_id: '10001',
                      },
                      header: {
                        'content-type': 'application/json'
                      },
                      success: function (res) {
                        console.log('tets1', res)
                        if (res && res.statusCode == 200) {
                          wx.setStorageSync('session_id', res.data.data.session_id)
                          that.globalData.header.Cookie = 'JSESSIONID=' + res.data.data.session_id;
                          that.globalData.is_vip = res.data.data.is_vip;
                          console.log('that.globalData-------------------++++++++++++++++++++', that.globalData)
                          //console.log('that.globalData.header', that.globalData.header.Cookie)
                          //console.log('ryy-qest' + JSON.stringify(res.data), res.data.data)
                          //有些操作需要登陆之后才能获取,但又是和login验证同时进行的话就需要加入到回调函数
                          if (callBack) {
                            callBack()
                          }
                        
                        }
    
                      }
                    })
                  },

    全局

    globalData: {
        userInfo: null,
        openid:null,
        user_id:null,
        code:null,
        header:{Cookie:null},
        session_id:null,
        img_domain:null,
        telephone:null,
        is_vip:null,
        getInit:{},
      },

    其他page文件下的index.js页面

    放在onload或者是其他生命周期内打印不出来cookie,一个是空值,一个是有值的
    旁边出来一个感叹号提示:Value below was evaluated just now
    但如果打印,console.log(app.globalData.header.Cookie)出来的是null 但是在自定义方法里边比如点击获取验证码里就能够获取到cookie的值

    ————————————————————问题已解决—————2018/4/21/15:10—————————————————————

    onLaunch,去掉

    this.getUserInfo()的方法
    在所需要的页面进行引入,app.getUserInfo(自定义的方法)

    要了解小程序的生命周期,onLaunch只执行一次,反复执行的话会出现问题。如果需要进行其他操作可以放在callback里边,这里又涉及到了小程序比较恶心的异步了。可以去了解一下小程序生命周期,以及es6的promise

    贴下解决代码:

  • 相关阅读:
    Python 自动化测试实战训练营,由浅入深,从小白到测试高手!
    接口测试 Mock 实战(二) | 结合 jq 完成批量化的手工 Mock
    从文科生转行测试,再到大厂测试开发工程师,我是如何做到的?
    严正声明|严厉打击盗版侵权、非法销售「霍格沃兹测试学院」课程的违法行为
    「金羽毛」有奖征文 | 记录测试开发技术进阶之路的点滴
    测试工程师职业发展漫谈
    Workshop 深圳站|实战+源码架构剖析带你揭开Appium的神秘面纱
    那些难改的 Bug,最后都怎样了?
    BAT大厂都在用的Docker。学会这三招,面试、工作轻松hold住
    2021 开年学习送福利,助力测试进阶提升!
  • 原文地址:https://www.cnblogs.com/web1/p/8901689.html
Copyright © 2020-2023  润新知