首页 > 编程语言 >微信小程序头像昵称填写能力-数据存储至缓存

微信小程序头像昵称填写能力-数据存储至缓存

时间:2023-05-15 10:02:17浏览次数:40  
标签:缓存 avatarUrl 微信 昵称 data let res nickName wx

又到了一年一度的授权接口修改时间---ps.去年10月,希望今年能消停点。

话不多说上代码。

setName文件:
<button class="avatar-wrapper" open-type="chooseAvatar" bind:chooseavatar="onChooseAvatar">
  <image class="avatar" src="{{avatarUrl}}"></image>
</button>
<view class="form-box">
  <form catchsubmit="formSubmit">
      <view class="row">
        <view class="text1">昵称:</view>
        <input type="nickname" bindinput="getName" class="weui-input" maxlength="16" minlength="2" name="input" placeholder="请输入2~16位昵称" value="{{nickName}}" />
      </view>
      <button class="sub-btn"  formType="submit">提交</button>
  </form>
</view>
var api = require("/utils/api.js"),
     app = getApp()

const defaultAvatarUrl = '/assets/person/head_portrait.png'

Page({
    data: {
      avatarUrl: defaultAvatarUrl,
      nickName: '',
    },

    //选择图片
    onChooseAvatar(e) {
      let that = this
      wx.getFileSystemManager().readFile({
        filePath: e.detail.avatarUrl, //地址
        encoding: 'base64', //编码格式
        success: res => {
          let base64 = 'data:image/png;base64,' + res.data
          that.setData({
            avatarUrl : base64
          })
        }
      })
    },
    //获取昵称
    getName(e) {
      let nick_name = e.detail.value
      this.setData({
        nickName: nick_name
      })
    },

    //提交
    formSubmit(e) {
      let that = this
      let openId = wx.getStorageSync("openId")

      let nickName = that.data.nickName.trim()
      let avatarUrl = that.data.avatarUrl
      if(avatarUrl == defaultAvatarUrl){
        wx.showToast({
          title: '请选择头像',
          icon: 'none'
        })
        return;
      }else if(nickName.length==''){
        wx.showToast({
          title: '昵称不能为空',
          icon: 'none'
        })
        return;
      }else if((/[^/a-zA-Z0-9\u4E00-\u9FA5]/g).test(nickName)){
        wx.showToast({
          title: '昵称不合法',
          icon: 'none'
        })
        return;
      }
      app.request({
        url: XXX,
        method: "POST",
        data:{
          openId,
          nickName,
          headPortraitBase64:avatarUrl
        },
        success: function (res) {
          wx.showToast({
            title: '修改成功!',
          })
          let userInfo = {
            nickName:res.Resultes.XXX,
            avatarUrl:res.Resultes.XXX.replace(/\\/g,"/")
          }
          wx.setStorage({   
            key: 'userInfo',
            data: userInfo,
            success: function() { 
              console.log('保存成功')
              wx.switchTab({
                url: '/pages/person/person',
              })
            },
            fail: function() {
            }
          })
        },
        fail: function() {
          wx.showToast({
            title: '修改失败!',
            icon: 'none'
          })
        }
      })
    },
})
.avatar-wrapper {
  padding: 0;
  width: 125rpx;
  height: 125rpx;
  border-radius: 50%;
  margin-top: 40px;
  margin-bottom: 40px;
}
.avatar {
  display: block;
  width: 125rpx;
  height: 125rpx;
  border-radius: 50%;
}
.container {
  display: flex;
}
.form-box{
  width: 690rpx;
  margin: 0 auto;
}
.row{
  display: flex;
  align-items: center;
  border-top: 1px solid #f4f4f4;
  border-bottom: 1px solid #f4f4f4;
  padding: 30rpx 0 35rpx 0;
  margin-bottom: 120rpx;
}
.weui-input{
width: 500rpx;
}
.sub-btn{
  color: #fff;
  background-color: blue;
}

 

person文件: 注:要在生命周期onShow中获取数据。
onShow: function () {
    let that = this
    wx.getStorage({
    key: 'userInfo',
    success: function (res) {
            that.setData({
               userInfo: res.data
            })
        },
    })
  },

 

 

 

标签:缓存,avatarUrl,微信,昵称,data,let,res,nickName,wx
From: https://www.cnblogs.com/bk1234/p/17400974.html

相关文章

  • 小程序优化之旅(三) -- 请求缓存与预请求优化
    一、预请求概念首先在一开始还是先明确下这里所提及到的“预请求”的概念和常规的http的options请求有所区别,这篇文章所涉及到的预请求的概念都是在页面切换时候的页面请求的提请发送,跳转进入新页面后能够快速的获取到服务端的数据。1.1预请求的业务含义为啥需要要做这个......
  • 第139篇:微信小程序的登录流程
    好家伙,补补补 顶不住了,跑不掉了,这部分的知识还是要补上 来看看微信小程序登录的完整流程 最左边的一列就是前端负责的部分了几个关键的参数:code:一个用户登录凭证,就是一个临时的tokenAppid:appid是微信账号的唯一标识,这个是固定不变的;如果了解微信公众号开发的就需要......
  • 前后端微信小程序订阅消息推送
    小程序端开发前需要获取小程序设置模板ID,没有设置模板消息时可以添加新的模板mp.weixin.qq.com拥有模板ID后,需要获取到下发消息权限用户下发推送消息权限在订单或者其它操作完成时,调起客户端小程序订阅消息界面,获取到用户操作结果//index.wxml<buttonbindtap="bindSubscribe......
  • 缓存一致性
    通信模式共享存储统一的地址空间,每一个处理器都可以访问。但是需要注意并发控制。使用线程。消息传递使用单独的地址 共享存储系统因为性能原因,使用多个私有缓存当一个chip读取一个值时,必须读取到最近写入的值。缓存一致性(CacheCoherence):执行一个读操作,应该返回哪一个......
  • 微信使用SQLite?
    SQLite是一个被大家低估的数据库,但有些人认为它是一个不适合生产环境使用的玩具数据库。事实上,SQLite是一个非常可靠的数据库,它可以处理TB级的数据,但它没有网络层。接下来,本文将与大家共同探讨SQLite在过去一年中最新的SQL功能。SQLite“只是”一个库,它不是传统意义上的服......
  • 前端项目更新的缓存问题
    问题描述:微信公众号前端项目更新总会遇到不会加载最新代码问题,需要进行多次刷新或手动清空微信缓存。问题分析:1、前端项目本身是否存在缓存配置;2、nginx是否存在缓存配置。解决方案:在前端项目配置做过动态hash处理的前提下,更新后构建输出的cssjs图片等文件会被重新请......
  • 使用 jQuery Mobile 与 HTML5 开发 Web App (十七) —— HTML5 离线缓存
    本文要介绍的,是HTML5离线网络应用程序的特性,离线网络应用程序在W3C中的实际名称是"OfflineWebapplications",也称离线缓存。当用户打开浏览器时,浏览器会将一个列表中指定的资源都下载并储存在本地。下次当用户再访问这个网络程序时,浏览器会自动引用本地缓存中相应的文件,而......
  • 详解缓存更新策略及如何选择
    概述缓存更新是指在数据发生变化时,保持缓存和数据库的数据一致性的问题。如果缓存和数据库的数据不一致,会导致用户看到过期或者错误的数据,影响业务逻辑和用户体验。为了实现缓存更新,我们可以采用以下四种方式其中的一种:CacheAside策略:应用程序直接与数据库和缓存交互,并负责......
  • 更改微信PC版(电脑版、windows版)的消息提示音
    目标:声音文件包含在微信PC版安装路径中的「WeChatResource.dll」文件中,修改它。路径举例:C:\ProgramFiles(x86)\Tencent\WeChat\[3.9.2.26] 用到的软件:eXeScope下载地址:https://www.123pan.com/s/kW3DVv-aHxJA.html复制链接(破解版)https://ro.softpedia-sec......
  • 泛微代码刷新缓存
    工具类:weaver.monitor.cache.CacheFactory;相关方法:ResultMapgetRecordCache(Stringvar1,Object...var2)refreshCache(Stringvar1,Objectvar2,ResultMapvar3)removeCacheForSql(Stringsql,Object...var2) ......