uniapp中,app.vue里的onLaunch中如果有异步方法,比如登录方法,返回结果可能会在页面的 onLoad 之后,为了让页面的 onLoad 在 onLaunch 之后执行可以做以前解决方案:
第一步:在main.js添加如下代码:
Vue.prototype.$onLaunched = new Promise(resolve => {
Vue.prototype.$isResolve = resolve
})
第二步:在 App.vue 的 onLaunch 中的网络请求后执行 this.$isResolve()
onLaunch: function() {
uni.login({
provider: 'weixin',
success: function(loginRes) {
let obj = {
code: loginRes.code
}
Login(obj).then(res => {
uni.setStorageSync('token', res.data.token);
that.$isResolve()
})
}
});
},
第三部:在所需要的页面 onLoad 中增加代码 如下:
async onLoad() {
await this.$onLaunched;
this.list()
},