收藏
回答

在页面中globalData为null或者false?

在模拟器中,如果把我的页面放在前面展示,登陆成功后返回,页面没有获取到,如图一,如果首页放在前面展示,再打开我的页面就能够正常获取到,网上查了些资料,说是异步问题,没有处理过这种问题,代码改怎么写?

APP代码:

App({
  onLaunch: function () {
    if (!wx.cloud) {
      console.error('请使用 2.2.3 或以上的基础库以使用云能力');
    } else {
      wx.cloud.init({
        env:'',
        traceUser: true,
      });
    }
    this.globalData = {};
    this.loadUserInfo(); 
  },
  loadUserInfo(){
    //获取用户的openid
    var that = this;
    wx.cloud.callFunction({
      name:'login',
      success(res){
        // console.log(res);
        that.globalData.openid = res.result.openid
        //查找数据库用户表里面是否有这个用户记录
        wx.cloud.database().collection('login').where({
          _openid:res.result.openid
        }).get({
          success:result => {
            // console.log(result)
            that.globalData.userInfo = result.data[0]
          }
        })
      }
    })
  },
 is_login(){
  if(this.globalData.userInfo){
    return true
  }else{
    return false
  } 
 },
});

wxml代码:

<view class="userinfo-group">
    <!-- 已登陆 -->
    <view class="user-group" wx:if="{{userInfo != null}}">
        <image class="avatra" src="{{avatarUrl?avatarUrl:'../../images/avatar.png'}}"></image>
        <view class="right-group">
            <view class="nickname">用户名:{{nickName}}</view>
            <view class="ID">用户ID:dfd9765490</view>
        </view>
    </view>
    <!-- 未登陆 -->
    <block wx:if="{{userInfo == null}}">
        <view class="user-group" bind:tap="onuserInfo">
            <image class="avatra" src="../../images/avatar.png"></image>
            <view class="right-group">
                <view class="nickname">点击登录</view>
                <view class="ID">登录获取更多权限</view>
            </view>
        </view>
    </block>
</view>

JS代码:

Page({
    data: {
    },
    onLoad(options) {
        console.log(app.is_login());
       if(app.is_login()){
        this.setData({
            userInfo:app.globalData.userInfo,
            avatarUrl:app.globalData.userInfo.avatarUrl,
            nickName:app.globalData.userInfo.nickName
        })
       }
    },
    
    onuserInfo(){ 
       wx.navigateTo({
           url:'/pages/login/login'
       })
    },

代码片段

https://developers.weixin.qq.com/s/A59C3ym57VRA

回答关注问题邀请回答
收藏

1 个回答

  • 朱兆恩(易做图)
    朱兆恩(易做图)
    05-29

    登录以后直接存起来:

    localStorage(长期存储)或者sessionStorage(会话存储)

    你那样操作很容易掉

    05-29
    有用
    回复 3
    • 蓝天☁
      蓝天☁
      发表于移动端
      05-29
      在app.js中存储?
      05-29
      回复
    • 朱兆恩(易做图)
      朱兆恩(易做图)
      05-29回复蓝天☁
      哪儿获取就在哪儿存,  wx.setStorageSync和wx.getStorage
      05-29
      回复
    • 蓝天☁
      蓝天☁
      05-31
      这个代码要怎么写?没弄过,我写了一段,打印出来是这样的
      05-31
      回复
登录 后发表内容