微信小程序之解除用户授权

先来看下下面这样写有什么问题?

me/index.wxml:


  
    
    
      
      {{userInfo.nickName}}
    
  

me/index.js:

Page({

    /**
     * 页面的初始数据
     */
    data: {
        userInfo:{},
        hasUserInfo:false,
        canIUse:wx.canIUse("button.open-type.getUserInfo")
    },
   //实现获取用户信息的方法
    getUserInfo:function(e){
        //console.log(e);
        this.setData({
            userInfo:e.detail.userInfo,
            hasUserInfo:true
        })
    }
})

getUserInfo方法能够获得该事件e,打印该事件可以看到用户信息:

微信小程序之解除用户授权_第1张图片

 但是会发现这样做有个问题,一旦重新编译进入小程序会让我们再次点击获取信息,这不是我们想要的。

接着看到app.js里有globalData这个全局变量,一旦用户授权后,信息就会存到这个全局变量中

globalData: {
    userInfo: null
  }

 如果想要在其他页面拿到总组件的对象,可以直接在每个页面的index.js里面获取应用实例,然后打印app,发现有我们所需要用到的东西。

微信小程序之解除用户授权_第2张图片

然后需要不管打开哪一个页面,都是能够获取数据的,所以选onLoad这个生命周期


    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {
        if(app.globalData.userInfo){
            this.setData({
                userInfo:app.globalData.userInfo,
                hasUserInfo:true
            })
        }else if(this.data.canIUse){
            //由于getUserInfo 是网络请求,可能会在Page.onLoad之后才返回
            //为了防止这种情况发生,所以此处加入callback
            app.userInfoReadyCallback=res=>{
                this.setData({
                    userInfo:res.userInfo,
                    hasUserInfo:true
                })
            }
        }
    },

 

你可能感兴趣的:(小程序)