大家好,又见面了,我是你们的朋友全栈君。
app.vue里的 onLaunch
中如果有异步方法(比如:登录),返回结果可能会在页面的 onLoad
之后,但 onLoad
中的方法需要登录回调的结果。
为了让页面的 onLoad
在 onLaunch
之后执行,解决方案:
1. main.js 添加代码
Vue.prototype.$onLaunched = new Promise(resolve => {
Vue.prototype.$isResolve = resolve;
})
2. 在 App.vue 的
onLaunch
中添加代码 this.$isResolve()
onLaunch: function() {
// 登录
uni.login({
provider: 'weixin',
success: (loginRes) => {
this.$axios({
url: '/xxxx/auth',
params: {
code: loginRes.code
}
}).then(res => {
try {
uni.setStorageSync('token', res.data.token);
this.$isResolve();
} catch (e) {
console.error(e)
}
})
}
});
}
3. 在页面
onLoad
中添加代码 await this.$onLaunched
async onLoad() {
// 等待登录结果返回
await this.$onLaunched;
// 处理后续业务逻辑(此时已存在token值)
console.log(uni.getStorageSync('token'));
this.getData();
},
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/129636.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...