// injectPage.js
function loginHook(onLoad, onLogin) {
return function(option) {
// 先执行原有 onLoad
onLoad.call(this, option)
const app = getApp()
if (app.globalData.userInfo) {
// 已经登录
setTimeout(() => {
this.globalData = app.globalData
if (onLogin) {
onLogin.call(this, option, app.globalData.userInfo)
}
}, 0)
} else {
//没有登录 异步=》onLogin
app.userInfoReadyCallback = json => {
this.globalData = app.globalData
if (onLogin) {
onLogin.call(this, option, app.globalData.userInfo)
}
}
}
}
}
export default function injectPage(page) {
return {
...page,
onLoad: loginHook(page.onLoad, page.onLogin)
}
}
使用
Page(
injectPage({
data: {},
onLoad: function() {},
onLogin: function(options, userInfo) {
this.toast('拿到用户信息')
this.fetch(userInfo.openid)
}
})
)
这是三年前的文章,可能不太适合现在的小程序咯
使用
这是三年前的文章,可能不太适合现在的小程序咯