Skip to content

[老文章]小程序中 登录判断的尝试 #7

@jaskang

Description

@jaskang
// 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)
    }
  })
)

这是三年前的文章,可能不太适合现在的小程序咯

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions