微信小程序表单那些事

最近在开发一个微信小程序修改昵称功能时候遇到一个问题,修改昵称之后再次查看,还是修改之前的昵称,好在最终爬出深坑,特此记录一下原因,希望各位开发者能够提前避坑。

先贴出代码如下:

onBlur (e) {
    let value = e.detail.value.replace(/\s/g, '')
    if (value.length > 200 || value.length < 2) {
      this.setData({
        isError: true,
        nickName: value
      })
      wx.showToast({
        title: '请输入正确的昵称',
        icon: 'none'
      })
      return
    }
    this.setData({
      nickName: value
    })
  },
  // 用户头像昵称修改,保存
  editHeadUrl () {
    wx.showLoading()
    return new Promise((resolve, reject) => {
      HTTP('user/wtdf/json/application/editHeadUrl', {
        openId: wx.getStorageSync('openid'),
        newNickName: this.data.nickName,
        type: 2,
        base64Str: this.data.avatarBase64
      }).then(res => {
        wx.hideLoading()
        if (res.resultCode == 0) {
          this.setData({
            successPopIsShow: true
          })
          this.countDownHandler()
        }
        resolve()
      }).catch(err => {
        reject(err)
      })
    })
  },

因为我是在input失去焦点的时候给昵称赋值,然后点击按钮进行提交,通过开发者工具测试,功能正常,可以进行修改操作,但在真机测试是发现修改无效,最终定位原因是由于点击按钮时,输入框还未失去焦点,故获取的还是原值,所以修改失败,最终解决办法为,在点击提交时通过延时调用的形式进行修改操作,最终问题得以解决。以下为具体代码:

// 用户头像昵称修改,保存
  editHeadUrl () {
    wx.showLoading()
    setTimeout(() => {
      return new Promise((resolve, reject) => {
        HTTP('user/wtdf/json/application/editHeadUrl', {
          openId: wx.getStorageSync('openid'),
          newNickName: this.data.nickName,
          type: 2,
          base64Str: this.data.avatarBase64
        }).then(res => {
          wx.hideLoading()
          if (res.resultCode == 0) {
            this.setData({
              successPopIsShow: true
            })
            this.countDownHandler()
          }
          resolve()
        }).catch(err => {
          reject(err)
        })
      })
    }, 100)
  },

以上思路仅供参考,如有更好的办法,欢迎回帖,作者将万分感谢!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值