判断用户是否登录
在项目中有这样的需求,类似于小鸡辞典小程序的显示用户昵称。
目前使用全局变量来实现,最终会使用其他方式实现。
在这里记录下自己的尝试方案,但目前暂未解决,后续要填补这个坑。
app.js:
App({
onLaunch: function () { }
globalData:{ userInfos:null } /*定义全局变量userInfos,为了不与用户信息重叠,加了s*/
})
在获取用户信息的登录页面(假设login.js):
var app = getApp(); //获取全局app
Page({
data: {
userInfos:'', //定义的全局变量
userInfo:'', //使用新接口获得用户信息的两个方法,此处不展开
hasUserInfo:false,
},
getUserProfile(){
wx.getUserProfile({
desc:'请登录',
success:(res) => {
console.log('获取用户信息成功',res)
let userinfos = res.userInfo //登录需要的用户信息
var globalUserInfos = app.globalData.userInfos //全局变量的用户信息
wx.setStorageSync('userinfos', userinfos)
this.setData({
userInfos:globalUserInfos, //使用globalUserInfos,目的为了用户信息赋值给全局变量
userInfo:userinfos, //登录需要的用户信息
hasUserInfo:true
})
},
fail:(res) => {
console.log('获取用户信息失败',res)
}
})
},
在需要判断用户是否登录的页面(假设commit.js):
var app = getApp(); //获取全局app
Page({
data: {
userInfos:'', //全局变量的用户信息:问题代码处
username:'', //用户名
},
......
onLoad: function (options) { //在onload方法中赋值给全局变量userInfos
this.setData({
userInfos:app.globalData.userInfos
})
},
getUserName(){
this.setData({
username:userInfos.nickName //赋值给用户昵称
})
},
commit(){
if( userInfos = null){ //如果GlobaluserInfo为空,提示需要登录
wx.showModal({
title: '请登录',
content: '请登陆后再发表',
}else{
const db = wx.cloud.database()
db.collection('Sayings').add({
data:{
...
username:GlobaluserInfo //把全局变量赋值给username
}, }
})
}
}
目前报错:userInfos is not defined