在模拟器中,如果把我的页面放在前面展示,登陆成功后返回,页面没有获取到,如图一,如果首页放在前面展示,再打开我的页面就能够正常获取到,网上查了些资料,说是异步问题,没有处理过这种问题,代码改怎么写?
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'
})
},
代码片段
登录以后直接存起来:
localStorage(长期存储)或者sessionStorage(会话存储)
你那样操作很容易掉