uni-app 开发微信小程序 onLaunch后再执行页面onLoad

因为需要在onLoad调用用户登陆信息数据,网上找了都是使用原生小程序开发的,没有uni-app解决问题的办法,现记录下来。

1、在app.vue onLaunch 注意,这里一定要使用(that.$scope.checkLoginReadyCallback)而不是that.checkLoginReadyCallback。是因为在定义于 App() 内的函数中,或调用 App 前调用 getApp() ,可以通过 this.$scope 获取对应的app实例。如果直接使用that.checkLoginReadyCallback只能获得未定定义的结果,详见官方文档 https://uniapp.dcloud.net.cn/tutorial/page.html#getapp

export default {
globalData: {

isSessionkey:false, //onLaunch是否已经执行完毕},

onLaunch: function(options) {


 wx.login({
	success(res) {
		 if (res.code) {
                ......
        that.globalData.isSessionkey=true;
	//由于这里是网络请求,可能会在 Page.onLoad 之后才返回  在onLoad中定义下app.checkLoginReadyCallbac 后才执行下述 that.$scope.checkLoginReadyCallback,此时用户数据肯定得到了,回调内再则可获取到用户数据				  
	if (that.$scope.checkLoginReadyCallback){
									      
	    that.$scope.checkLoginReadyCallback(true);
	}


}
}

  

 

 2、在页面onLoad中调用

      

onLoad() {
    
            let that = this;
            
            //判断onLaunch是否执行完毕
            if (app.globalData.isSessionkey){    
              //初始化页面数据方法
            }else{
                
              app.checkLoginReadyCallback = res => {
                
               //初始化页面数据方法
              };
              
            
            }
          
          },

 

posted @ 2025-01-12 14:25  fogwu  阅读(258)  评论(0编辑  收藏  举报