求解释小程序demo中授权代码的意思?
发布于 5 年前 作者 xiuyingchang 347 次浏览 来自 问答
onLoad: function () {
    if (app.globalData.userInfo) { 
      this.setData({  //从逻辑层js 发送至 视图层wxml。同时改变对应的值
        userInfo: app.globalData.userInfo,
        hasUserInfo: true
      })
    } else if (this.data.canIUse){
      // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
      // 所以此处加入 callback 以防止这种情况
      app.userInfoReadyCallback = res => {  //res => {}表示 {}返回的值赋予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
    })
  }

完全看不懂,微信小程序的demo,一个授权代码感觉写得好啰嗦,也不知道是些什么意思。

主要问题:

1.if 可以理解,但是else if 中参数canIUse是什么来的?app.userInfoReadyCallback = res => {}又代表什么?


2.else中注释open-type=getUserInfo是什么意思(wxml中也有,不知道代表什么)


3.最后,wxml中有个按钮绑定了一个getUserInfo函数,既然这样那就是说点击这个按钮就可以调用getUserInfo函数

,那么2问中的else作用是什么呀,怎么它又调用了wx.getUserInfo函数了?更纳闷的是,获取用户信息不是应该调用API吗,怎么直接定义函数啊。


好多问题,一头雾水,希望那个好心人能帮我解释一下,什么感谢。

回到顶部