6

使用全局变量判断用户是否登录

 3 years ago
source link: https://felixxiong.github.io/2021/05/08/%E4%BD%BF%E7%94%A8%E5%85%A8%E5%B1%80%E5%8F%98%E9%87%8F%E5%88%A4%E6%96%AD%E7%94%A8%E6%88%B7%E6%98%AF%E5%90%A6%E7%99%BB%E5%BD%95/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

使用全局变量判断用户是否登录

发表于 2021-05-08

| 分类于 编程开发

前端

微信小程序

| 0

| 阅读次数:

| 3

字数统计: 454

|

阅读时长 ≈ 1

判断用户是否登录

在项目中有这样的需求,类似于小鸡辞典小程序的显示用户昵称。

目前使用全局变量来实现,最终会使用其他方式实现。

在这里记录下自己的尝试方案,但目前暂未解决,后续要填补这个坑。

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

wechat
产品北里,讲述产品和人性、涉及设计、技术和运营的公众号。
你们的赞赏是我更新的动力~

Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK