微信小程序用户信息更新指南:头像与昵称篇

微信小程序用户信息更新指南:头像与昵称篇

在微信小程序中,用户信息的更新是一个常见需求,尤其是头像和昵称的更新。本文将详细介绍如何在微信小程序中实现用户头像和昵称的更新,包括获取头像临时路径、上传头像到服务器、完成头像更新以及更新用户昵称的步骤和代码实现。

1. 更新用户头像
思路分析

当用户点击头像时,可以利用微信提供的头像昵称填写能力快速完善用户信息。实现这一功能需要两步:

  1. button组件的open-type属性设置为chooseAvatar
  2. 通过bindchooseavatar事件回调获取头像信息的临时路径。
落地代码

profile.wxml

xml 复制代码
<view class="avatar">
  <button
    class="avatar-btn"
    hover-class="none"
    open-type="chooseAvatar"
    bindchooseavatar="chooseAvatar"
  >
    <image src="{{ userInfo.headimgurl || '/assets/images/avatar.png' }}" />
  </button>

</view>

profile.js

javascript 复制代码
// 更新用户头像
chooseAvatar(event) {
  const { avatarUrl } = event.detail;
  this.setData({
    'userInfo.headimgurl': avatarUrl
  });
},
2. 头像上传到服务器
思路分析

临时文件可能会随时失效,因此需要将头像信息的临时路径上传到服务器。

有两种方法,一个是使用封装好的upload 方法,另一个是使用小程序提供的wx.uploadFile API方法进行上传。

法一:

api/user.js

javascript 复制代码
/**
 * @description 上传文件
 * @param {*} FilePath 要上传的资源路径
 * @param {*} name 要上传的资源key

 */
export const reqUploadFile=(FilePath,name)=>{
  return http.upload(
    '/fileUpload',
    FilePath,
    name
  )
}

profile.js

javascript 复制代码
//顶部引入,在getAvatar调用。
import {reqUploadFile}from '../../../../api/user'
const res=await reqUploadFile(avatarUrl,'avatar')
法二:

profile.js

javascript 复制代码
getAvatar(e) {
  const { avatarUrl } = e.detail;
  wx.uploadFile({
    url: 'https://gmall-prod.atguigu.cn/mall-api/fileUpload',
    filePath: avatarUrl,
    name: 'file',
    header: {
      token: wx.getStorageSync('token'),
    },
    success: (res) => {
      const uploadRes = JSON.parse(res.data);
      this.setData({
        'userInfo.headimgurl': uploadRes.data
      });
    },
    fail(err) {
      wx.showToast({
        title: '头像更新失败,请稍后再试',
        icon: 'none'
      });
    }
  });
}
3. 完成头像更新
思路分析

用户点击保存时,需要同步到服务器。根据接口文档封装接口API函数,然后调用该函数更新用户信息。

落地代码

user.js

javascript 复制代码
export const reqUpdateUserInfo = (updateUser) => {
  return http.post('/mall-api/weixin/updateUser', updateUser);
}

profile.js

javascript 复制代码
async updateUserInfo() {
  await reqUpdateUserInfo(this.data.userInfo);
  wx.setStorageSync('userInfo', this.data.userInfo);
  this.setUserInfo(this.data.userInfo);
  wx.showToast({
    title: '头像更新成功',
    icon: 'none'
  });
}
4. 更新用户昵称
思路分析

更新用户昵称的接口与更新头像相同,可以直接复用。用户可以通过输入框输入新的昵称或使用微信昵称。

落地代码

profile.wxml

xml 复制代码
<van-dialog
  custom-style="position: relative"
  use-slot
  title="修改昵称"
  show="{{ isShowPopup }}"
  showConfirmButton="{{ false }}"
  showCancelButton="{{ false }}"
  transition="fade"
>
  <form bindsubmit="getNewName">
    <input
      class="input-name"
      type="nickname"
      bindinput="getNewName"
      name="nickname"
      value="{{ userInfo.nickname }}"
    />
    <view class="dialog-content">
      <button class="cancel" bindtap="cancelForm">取消</button>

      <button class="confirm" type="primary" formType="submit">确定</button>

    </view>

  </form>

</van-dialog>

profile.js

javascript 复制代码
getNewName(e) {
  const { nickname } = e.detail.value;
  this.setData({
    'userInfo.nickname': nickname,
    isShowPopup: false
  });
},

结论

通过上述步骤,我们可以在微信小程序中实现用户头像和昵称的更新。确保在实现过程中,路径和参数设置正确,以避免运行时错误。同时,注意测试每个功能点,确保用户体验流畅。

相关推荐
用户479492835691517 分钟前
别再当 AI 的"人肉定位器"了:一个工具让 React 组件秒定位
前端·aigc·ai编程
WYiQIU1 小时前
面了一次字节前端岗,我才知道何为“造火箭”的极致!
前端·javascript·vue.js·react.js·面试
qq_316837751 小时前
uniapp 观察列表每个元素的曝光时间
前端·javascript·uni-app
小夏同学呀1 小时前
在 Vue 2 中实现 “点击下载条码 → 打开新窗口预览 → 自动唤起浏览器打印” 的功能
前端·javascript·vue.js
芳草萋萋鹦鹉洲哦1 小时前
【vue】导航栏变动后刷新router的几种方法
前端·javascript·vue.js
1***y1781 小时前
Vue项目性能优化案例
前端·vue.js·性能优化
谢尔登2 小时前
【CSS】样式隔离
前端·css
头发还在的女程序员2 小时前
基于JAVA语言的短剧小程序-抖音短剧小程序
java·开发语言·小程序
百***58842 小时前
Redis 通用命令
前端·redis·bootstrap
Liu.7742 小时前
vue3 路由缓存导致onMounted无效
前端·javascript·vue.js