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

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

浏览量:3853 时间: 来源:yukilong

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

me/index.wxml:

<view class="container">  <view class="userinfo">    <button wx:if="{{!hasUserInfo && canIUse}}" open-type="getUserInfo" bindgetuserinfo="getUserInfo">获取头像昵称</button>    <block wx:else>      <image class="userinfo-avatar" src="{{userInfo.avatarUrl}}" background-size="cover"></image>      <text class="userinfo-nickname">{{userInfo.nickName}}</text>    </block>  </view></view>

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,打印该事件可以看到用户信息:

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

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

globalData: {    userInfo: null  }

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

然后需要不管打开哪一个页面,都是能够获取数据的,所以选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                })            }        }    },

 

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

最新资讯

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎