微信小程序quickstart项目中有关userInfoReadyCallback的解释
来源:互联网 发布:上海交通大学宿舍网络 编辑:程序博客网 时间:2024/06/05 19:37
userInfoReadyCallback 在index.js中定义,在app.js中使用
附app.js代码:
//app.jsApp({ onLaunch: function () { // 展示本地存储能力 var logs = wx.getStorageSync('logs') || [] logs.unshift(Date.now()) wx.setStorageSync('logs', logs) // 登录 wx.login({ success: res => { // 发送 res.code 到后台换取 openId, sessionKey, unionId } }) // 获取用户信息 wx.getSetting({ success: res => { if (res.authSetting['scope.userInfo']) { // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框 wx.getUserInfo({ success: res => { // 可以将 res 发送给后台解码出 unionId this.globalData.userInfo = res.userInfo // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回 // 所以此处加入 callback 以防止这种情况 if (this.userInfoReadyCallback) { this.userInfoReadyCallback(res) } } }) } } }) }, globalData: { userInfo: null }})
if (this.userInfoReadyCallback) { this.userInfoReadyCallback(res) }
上面这句是判断 userInfoReadyCallback 是否定义了,若没定义,说明其在Page.onLoad 定义userInfoReadCallback 之前运行的,说明app.globalInfo.userInfo已经包含了用户登录的信息了。
若定义了,说明在Page.onLoad比该语句返回的success结果之前已经运行了。此时的app.globalInfo.userInfo的值是空的,所以还需要再重新对其进行赋值。
再附上index.js代码
//index.js//获取应用实例const app = getApp()Page({ data: { motto: 'Hello World', userInfo: {}, hasUserInfo: false, canIUse: wx.canIUse('button.open-type.getUserInfo') }, //事件处理函数 bindViewTap: function() { wx.navigateTo({ url: '../logs/logs' }) }, onLoad: function () { 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 }) } } else { // 在没有 open-type=getUserInfo 版本的兼容处理 wx.getUserInfo({ success: res => { app.globalData.userInfo = res.userInfo this.setData({ userInfo: res.userInfo, hasUserInfo: true }) } }) } }, getUserInfo: function(e) { console.log(e) app.globalData.userInfo = e.detail.userInfo this.setData({ userInfo: e.detail.userInfo, hasUserInfo: true }) }})
阅读全文
0 0
- 微信小程序quickstart项目中有关userInfoReadyCallback的解释
- springside中quickstart项目修改
- 微信小程序的示例程序quickstart学习笔记
- 有关文件中DEBUG定义的解释!
- Cocos中有关九宫格的解释
- 有关volatile的解释
- 有关volatile的解释
- 有关字符集的解释
- 有关cookie中遇到的 utma utmz 的解释
- ASP中有关双引号,单引号以及&号的解释
- ASP中有关双引号,单引号以及&号的解释
- 创建Maven quickstart项目
- 项目中出现的词的解释
- 在Eclipse中用Maven建立quickstart类型的项目
- Maven的maven-archetype-quickstart 模板转为Eclipse项目
- 有关Hibernate_Id_Generator的解释(转载)
- 有关MYSQLDUMP的详细解释
- 有关MYSQLDUMP的详细解释
- 腾讯2017秋招笔试编程题(四)----geohash编码
- C后台开发书籍索引
- 【常用排序算法】以最简单的方式理解冒泡排序
- JDK中Future的源码解读
- Spring AOP四种实现方式和Demo
- 微信小程序quickstart项目中有关userInfoReadyCallback的解释
- 【前端】form标签与table标签混合使用注意事项
- MingW64+msys编译x264
- 使用Android Studio打开别人的工程项目的方法
- centos输入法的安装
- [LeetCode]141. Linked List Cycle
- 欢迎使用CSDN-markdown编辑器
- 数据结构(Data Structure) 第一集(算法分析)
- JDBC