微信小程序最新用户头像昵称获取规则调整应对措施(2022)

news2024/11/24 11:43:45

目录

  • 一、调整
  • 二、应对措施
    • 2.1 更新头像
    • 2.2 更新昵称
  • 三、完整代码

一、调整

小程序用户头像昵称获取规则调整公告
在这里插入图片描述
以前通过wx.getUserProfile获取用户信息,用户点击同意以后,便可以直接获取相关信息,但是官方最近做出了调整,直接将头像和昵称使用默认值填充了,所以我们无法直接获取用户的信息了,需要新增一个页面用于用户自定义头像和昵称。

二、应对措施

微信新增了头像填充能力:头像昵称填写
在这里插入图片描述
在这里插入图片描述

2.1 更新头像

在这里插入图片描述
就是设置button的open-type为chooseAvatar,当用户点击时,就会触发“修改头像”事件。
在这里插入图片描述
button按钮

    <button class="avatar-wrapper" open-type="chooseAvatar" bind:chooseavatar="onChooseAvatar">
      修改头像
    </button>

回调函数onChooseAvatar:

  //用户选中自定义头像的回调
  onChooseAvatar(e) {
    const {
      avatarUrl
    } = e.detail
    // 获取到的avatarUrl(临时地址):http://tmp/ZENIKXqaUC20a19f3c2fd621b82c7662b952e000d532.jpeg
    console.log(avatarUrl);
    //更新当前页面信息
    this.setData({
      ['userInfo.avatarUrl']: avatarUrl,
    })
  },

获取到的头像地址是一个临时地址,并不是长期有效的,我们需要将这个地址对应的文件存到自己的服务器上或者云存储中。
例如使用云开发的存储能力:微信小程序云开发-存储
在这里插入图片描述

2.2 更新昵称

在这里插入图片描述

<input type="nickname" class="nick-name-input" placeholder="请输入昵称" 	bindblur="changeNickName"/>
  // 用户修改昵称
  changeNickName(e){
    let name = e.detail.value;
    if(name.length === 0) return;
    this.setData({
      ['userInfo.nickName']: name
    })
  }

这里没有使用bindtap而是直接使用bindblur是因为如果直接使用提示的个人微信昵称填充时,不会触发bindtap事件。

三、完整代码

主要是逻辑代码,样式还需要根据自己的业务进行调整。
index.wxml

<!--index.wxml-->
<view class="container">
  <view class="userinfo" wx:if="{{hasUserInfo}}">
    <block>
      <image class="userinfo-avatar" src="{{userInfo.avatarUrl}}" mode="cover"></image>
      <text class="userinfo-nickname">{{userInfo.nickName}}</text>
    </block>
    <button class="avatar-wrapper" open-type="chooseAvatar" bind:chooseavatar="onChooseAvatar">
      修改头像
    </button>
    <input type="nickname" class="nick-name-input" placeholder="请输入昵称" 	bindblur="changeNickName"/>
  </view>
  <button bindtap="getUserProfile" wx:else>获取用户信息</button>
</view>

index.js

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

Page({
  data: {
    userInfo: {},
    hasUserInfo: false
  },
  onLoad() {

  },
  getUserProfile(e) {
    // 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认,开发者妥善保管用户快速填写的头像昵称,避免重复弹窗
    wx.getUserProfile({
      desc: '展示用户信息', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
      success: (res) => {
        console.log(res.userInfo)
        this.setData({
          userInfo: res.userInfo,
          hasUserInfo: true
        })
      }
    })
  },
  //用户选中自定义头像的回调
  onChooseAvatar(e) {
    const {
      avatarUrl
    } = e.detail
    // 获取到的avatarUrl(临时地址):http://tmp/ZENIKXqaUC20a19f3c2fd621b82c7662b952e000d532.jpeg
    console.log(avatarUrl);

    this.setData({
      ['userInfo.avatarUrl']: avatarUrl,
    })
  },
  // 用户修改昵称
  changeNickName(e){
    let name = e.detail.value;
    if(name.length === 0) return;
    this.setData({
      ['userInfo.nickName']: e.detail.value
    })
  }
})

index.wxss

/**index.wxss**/
.userinfo {
  display: flex;
  flex-direction: column;
  align-items: center;
  color: #aaa;
}

.userinfo-avatar {
  overflow: hidden;
  width: 128rpx;
  height: 128rpx;
  margin: 20rpx;
  border-radius: 50%;
}

.avatar-wrapper{
  margin: 10px 0;
}

.nick-name-input{
  border: 1px solid #f1f1f1;
  padding:5px;
}

修改后:
在这里插入图片描述
注意:修改后的userInfo应该同步更新到数据库中,因为当前仅仅只是修改该了data中的数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/20741.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图书管理系统

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 目录 文章目录 前言 一.界面设计 1.管理员菜单 2.用户菜单 3.用户操作&#xff1a; 查找图书借阅图书归还图书显示图书 4.管理员操作 查找图书新增图书删除图…

【Matlab】Matlab导入多个.mat文件并画图的过程详解

Matlab导入多个.mat文件并画图的过程详解0. 实验背景1. 导入.mat文件存储1.1 导入.mat文件及作图最简单的方式&#xff1a;1.2 导入.mat文件及作图的脚本代码2. plot画图总结2.1 画散点图2.1.1 点形状2.1.2 点大小2.1.3 点颜色2.1.4 点填充2.2 画折线图2.2.1 折线形状2.2.2 折线…

多路转接(IO复用)接口介绍

文章目录引言select函数声明参数以及类型介绍返回值select代码演示优缺点poll函数声明参数以及类型介绍返回值poll代码演示优缺点epollepoll三调用简述epoll实现原理epoll代码演示epoll工作方式对比LT和ET注意点引言 此文仅仅作为多路转接api的介绍和使用,而对于五种IO模型的介…

闲活章始:初创纪元

OK先说好&#xff0c;标题沙雕的原因是因为要求不少于5个字 不打算提炼语言了&#xff0c;浓缩表达是个费事活。既然文章归为闲活&#xff0c;其中也来些闲话较好。主要给自己看&#xff0c;能帮助他人更妙。 待闲活干好之日&#xff0c;就是文章收费之时。 做什么 做…

(JVM)运行时数据区的总结以及常见大厂面试题

运行时数据区的总结以及常见大厂面试题 线程私有的&#xff1a;程序计数器、本地方法栈、虚拟机栈 虚拟机栈里的栈帧的结构&#xff1a;返回值、局部变量表、操作数栈、动态链接&#xff08;装着指向运行时常量池的当前方法的引用&#xff0c;知道当前方法是引用运行时常量池中…

中国制造2025-智能制造是强国必由之路

《中国制造2025》十大重点领域 新一代信息技术产业&#xff1a;集成电路及专用设备、信息通信设备、操作系统与工业软件、智能制造核心技术信息设备 高档数控机床和机器人&#xff1a;高档数控机床与基础制造装备、机器人 航空航天装备:飞机、航空发动机、航空机载设备与系统…

软件测试---前言篇

一 : 主要内容 二 : 什么是软件测试 在规定的条件下对程序进行操作&#xff0c;以发现程序错误&#xff0c;衡量软件质量&#xff0c;并对其是否能满足设计要求进行评估的过程.上面这是官话 . 在我们日常生活中 , 就有许多测试的行为 , 比如地铁站的金属检测仪 , 用于检测旅客…

【SpringBoot笔记26】SpringBoot框架集成ElasticSearch数据库

这篇文章&#xff0c;主要介绍SpringBoot框架如何集成ElasticSearch数据库。 目录 一、SpringBoot集成ES 1.1、ElasticSearch介绍 1.2、引入ES依赖 1.3、实例化ES对象 1.4、创建测试控制器 一、SpringBoot集成ES 1.1、ElasticSearch介绍 ElasticSearch是一款分布式&…

[附源码]java毕业设计网上购物商城系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Allegro只给孔或pin加背钻属性操作指导

Allegro只给孔或pin加背钻属性操作指导 Allegro支持只给孔加背钻属性,除了孔,pin也是可以的,具体操作步骤如下 选择Edit-Property命令 Find选择Net 选择需要背钻的网络添加背钻属性,点击OK 设置下背钻参数 选择背钻种类,top钻选择top,bottom钻选择bottom 把需要背钻…

科研笔记—Ergodic Rate Analysis of STAR-RIS Aided NOMA Systems

Ergodic Rate Analysis of STAR-RIS Aided NOMA Systems 1 STAR-RIS2 摘要3 系统模型3.1 信道3.2 用户位置3.3 ES&#xff08;Energy Splitting&#xff09;能量分裂协议3.4 NOMA3.5 信道模型3.6 信干噪比4 仿真4.1 遍历率分析星型智能反射面辅助NOMA系统的遍历率分析 原文链接…

Day08--初步创建并使用自定义组件

提纲挈领&#xff1a; 1.如何创建自定义组件&#xff1f; 我的操作&#xff1a; ************************************************* ************************************************* ************************************************* *****************************…

Netty:入门(2)

相关文章&#xff1a; 《IO 模型与多路复用》 《Java NIO》 《Netty&#xff1a;入门&#xff08;1&#xff09;》 写在开头&#xff1a;本文为学习后的总结&#xff0c;可能有不到位的地方&#xff0c;错误的地方&#xff0c;欢迎各位指正。 前言 在前文中&#xff0c;我们…

Spring 中 Bean 对象的存储和取出

由于 Spring 拥有对象的管理权&#xff0c;所以我们也需要拥有较为高效的对象存储和取出的手段&#xff0c;下面我们来分别总结一下&#xff1a; 存对象 配置文件 在存储对象之前&#xff0c;我们需要先配置一下 Spring 的扫描目录&#xff0c;这样 Spring 即可在正确的目录…

JVM复习【面试】

JVM复习【面试】前言推荐复习【JVM】第一部分 走进Java第1章 走进Java /2第二部分 自动内存管理机制第2章 Java内存区域与内存溢出异常 /382.2 运行时数据区 /382.2.2 Java虚拟机栈 /392.3 HotSpot虚拟机对象探秘2.3.1 对象的创建 /442.3.2 对象的内存布局 /472.4 实战&#xf…

HTML-Demo:工商银行电子汇款单

HTML-Demo&#xff1a;工商银行电子汇款单 Date: November 20, 2022 Demo简介&#xff1a; 简要说明一下这个demo 用HTML完成以下表格 知识点简介&#xff1a; 简要介绍其中一些知识点 表格属性 cellspacing 与 cellpadding 功能&#xff1a; cellpadding和cellspacing属性控…

面试:java中的各种锁对比

共享锁 共享锁有CountDownLatch, CyclicBarrier, Semaphore, ReentrantReadWriteLock等 ReadWriteLock&#xff0c;顾名思义&#xff0c;是读写锁。它维护了一对相关的锁 — — “读取锁”和“写入锁”&#xff0c;一个用于读取操作&#xff0c;另一个用于写入操作。“读取锁…

D. Make It Round(贪心 贡献 数学)[Codeforces Round #834 (Div. 3)]

题目如下&#xff1a; 思路 or 题解&#xff1a; 我们先考虑如何操作使结尾有最多的 0 我们不难发现&#xff1a; 2 * 5 10 10 10 我们是否只需要考虑 2 与 5 的贡献就行了 答案是肯定的&#xff01;&#xff01;&#xff01; 约定&#xff1a; cnt5因数5的个数cnt_5 因数 …

kubernetes集群安装Ingress-nginx

文章目录概述搭建环境版本对应关系yaml文件安装实操演示常见问题外链地址概述 Ingress 公开从集群外部到集群内服务的 HTTP 和 HTTPS 路由。 流量路由由 Ingress 资源上定义的规则控制。 Kubernetes 通过 kube-proxy 服务实现了 Service 的对外发布及负载均衡&#xff0c;它的各…

2.3、传输方式

2.3、传输方式 2.3.1、串行&并行 2.3.3.1、串行传输 串行传输是指数据是一个比特一个比特依次发送的。因此&#xff0c;在发送端与接收端之间只需要一条数据传输线路即可 2.3.3.2、并行传输 一次发送 nnn 个比特。为此&#xff0c;在发送端和接收端之间需要有 nnn 条传输…