WeChatウィジェットquickstartプロジェクトにおけるuserInfoReadyCallbackの解釈
2691 ワード
义齿jsで定義app.jsでの使用
付appjsコード:
定義されている場合はPageに説明する.onLoadは、この文が返すsuccess結果よりも前に実行されています.このときのapp.globalInfo.userInfoの値は空なので、再割り当てが必要です.
さらにindexを添付します.jsコード
付appjsコード:
//app.js
App({
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
})
}
})