微信小程序获取用户信息之后,页面间的传值

我们进入一个小程序,首先会请求获取用户昵称及头像,从“首页”获取的资料要传值到“我的”这个页面里面
我开始做的时候,在“我的”这个页面获取到的用户信息可以传值给“首页”,但是“首页”获取到的资料无法传给“我的”,
费劲一番周折(原谅我太笨),解决了,代码如下:
index页面即首页:
wxml代码:

<view>
  <view wx:if="{{!hasUserInfo && canIUse}}" class="modal-mask" catchtouchmove="preventTouchMove"></view>
  <button wx:if="{{!hasUserInfo && canIUse}}" class="modal-dialog" open-type="getUserInfo" bindgetuserinfo="getUserInfo"> 一键登录 </button>
  <block>
    <image src="{{userInfo.avatarUrl}}" mode="cover" bindtap='headImage'></image>
    <text>{{userInfo.nickName}}</text>
  </block>
</view>

js代码:

//获取应用实例
const app = getApp()

Page({
  data: {
    userInfo: {},
    hasUserInfo: false,
    canIUse: wx.canIUse('button.open-type.getUserInfo')
  },

  onShow: 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) {
    wx.setStorageSync('userInfo', e.detail.userInfo);
    app.globalData.userInfo = e.detail.userInfo
    console.log(app.globalData.userInfo)
    this.setData({
      userInfo: e.detail.userInfo,
      hasUserInfo: true
    })
  },
  bindViewTap: function () {
    this.setData({
      hasUserInfo: false
    })
  },
})

mine页面即我的:
wxml代码:

<view>
  <view wx:if="{{!hasUserInfo && canIUse}}" class="modal-mask" catchtouchmove="preventTouchMove"></view>
  <button wx:if="{{!hasUserInfo && canIUse}}" class="modal-dialog" open-type="getUserInfo" bindgetuserinfo="getUserInfo"> 一键登录 </button>
  <block>
    <image src="{{userInfo.avatarUrl}}" mode="cover" bindtap='headImage'></image>
    <text>{{userInfo.nickName}}</text>
  </block>
</view>

js代码:

const app = getApp()

Page({
  data: {
    userInfo: {},
    hasUserInfo: false,
    canIUse: wx.canIUse('button.open-type.getUserInfo')
  },

  onShow: 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) {
    wx.setStorageSync('userInfo', e.detail.userInfo);
    app.globalData.userInfo = e.detail.userInfo
    console.log(app.globalData.userInfo)
    this.setData({
      userInfo: e.detail.userInfo,
      hasUserInfo: true
    })
  },
  bindViewTap: function () {
    this.setData({
      hasUserInfo: false
    })
  },
})

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值