微信小程序的onload页面加载先于onLaunch 加载,导致登录获取数据有问题

参考:https://blog.csdn.net/txqd1989/article/details/79096415

本文采用第二种方法,使用异步Promise来解决页面加载完成后却拿不到storage中的内容,页面加载在登录前

本文讲的是登录获取不到数据的问题及登录步骤

1.在app.js创建方法

  getLogin() {
// 查看是否有登录isLogin字段
const isLogin = wx.getStorageSync(isLogin)
// 如果本地没有存储,表示没有登录,没有登录就要请求,否则不请求
if(!isLogin ) {
// 登录
return new Promise(function (resolve, reject) {
wx.login({
success: res => {
console.log(res.code, 返回)
uriFun.loginFun(res,resolve) // 这个是我封装的登录
// 发送 res.code 到后台换取 openId, sessionKey, unionId
          }
})
})
} else {
return new Promise(function (resolve, reject) {
resolve()
})
}
},

我封装的登录

 // 登录
  function loginFun(res,resovle) {
request.getData("user/loginByCode?code=" + res.code,
backres => {
console.log(backres, 获取到了吗)
if(backres.status == "success") {
wx.setStorage({
key: loginToken,
data: backres.data.token
});
wx.setStorage({
data: backres.data,
key: userinfo,
});
wx.setStorage({
data: true,
key: isLogin,
})
resovle() // 这里调用,表示登陆成功后再执行回调内容,即首页index。js中的函数
}
},
fail => {
console.log(fail, 失败了吗)
}
)
}

2.将以上登录的方法在onLaunch中调用

 onLaunch() {
this.getLogin()
},

3.在首页的index.js中

  onLoad() {
var that = this
getApp().getLogin().then(()=>{ // 意思是先登录后再加载,即onLaunch 先于onload加载
getAddress.getAddress(that);
})
},

说明:第3步中的then里面的回调函数是Promise中 的resolve,

resolve() 表示调用then里面的回调函数

微信小程序的onload页面加载先于onLaunch 加载,导致登录获取数据有问题

原文:https://www.cnblogs.com/lude1994/p/14877928.html

以上是微信小程序的onload页面加载先于onLaunch 加载,导致登录获取数据有问题的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>