vant中如何修改用户的头像

目录
  • vant修改用户的头像
  • vant实现纯客户端用户头像上传预览

vant修改用户的头像

我们的项目中经常会遇到用户个人信息的修改,当然用的组件就是 vant 中的 van-uploader 组件, 但是这个组的是有一个回显功能的, 它的样式不太符合我们, 更改用户头像的场景

对比一下

van-uploader 的本来的样式是这样的

而我们需要修改用户头像的样式是这样的

我们的需求就是 上传完图像之后, 再次点击头像, 还可以再次上传一个新的头像, 这样的需求, van-uploader 中的 fileList是实现不了的

那么我是怎么实现这个功能的呢?

我没有使用 van-uploader 的 fileList 属性, 我使用的它的一个 slot 的插槽功能

图中的 van-image 的src 是写死了的, 它可以通过 接口请求返回的数据来改变。会的都会,不用多说

这样就实现我们的想要的功能

vant实现纯客户端用户头像上传预览

<style lang="less" scoped>
.EditUserINfo {
  .avatar {
    width: 30px;
    height: 30px;
  }
  /* 样式穿透 */
  /deep/ .van-image-preview__cover{
    /* 取消样式设置 */
    top: unset;
    left: 0;
    right: 0;
    bottom: 0;
    .van-nav-bar{
      background: #000;
    }
  }
}
</style>
<template>
  <div class="EditUserINfo">
    <van-nav-bar title="编辑资料" left-arrow @click-left="$router.back()"></van-nav-bar>
    <van-cell-group>
      <van-cell title="头像" is-link @click="onAvatarClick">
        <van-image class="avatar" round :src="user.photo" />
      </van-cell>
      <!-- 表单元素的hidden属性:隐藏表单元素 -->
      <input type="file" hidden ref="file" @change="onFileChange" />
      <van-cell title="昵称" is-link :value="user.name"></van-cell>
      <van-cell title="介绍" is-link value="内容"></van-cell>
      <van-cell title="性别" is-link :value="user.gender===0?'男':'女'"></van-cell>
      <van-cell title="生日" is-link :value="user.birthday"></van-cell>
    </van-cell-group>
    <!-- 头像预览,预览关闭文件重置 -->
    <van-image-preview v-model="isPreviewShow" :images="images" @close="$refs.file.value=''">
      <!-- 插入插槽cover -->
      <van-nav-bar
        slot="cover"
        left-text="取消"
        right-text="确定"
        @click-left="isPreviewShow=false"
        @click-right="onUpdateAvatar"
      />
    </van-image-preview>
  </div>
</template>

<script>
export default {
  name: "EditUserINfo",
  components: {},
  props: {},
  data() {
    return {
      user: {
        photo: "https://img.yzcdn.cn/vant/cat.jpeg",
        name: "凯文",
        gender: "男",
        birthday: "1996-12-18"
      }, //用户信息
      isPreviewShow: false,
      images: [] //预览图片列表
    };
  },
  watch: {},
  computed: {
    file() {
      return this.$refs["file"];
    }
  },
  methods: {
    onAvatarClick() {
      this.file.click();
    },
    onFileChange() {
      // 1.拿到file类型input选择的文件对象
      const fileObj = this.file.files[0];
      // 2.使用window.URL.createObjectURL(file)得到文件数据
      const fileData = window.URL.createObjectURL(fileObj);
      // 3.将img.src = 第2步的结果
      this.images = [fileData];
      this.isPreviewShow = true;
    },
    onUpdateAvatar() {
      // 1.构造包含文件数据的表单对象
      // 注意:含有文件的服务务必要放到FormData中
      // 用代码来构造一个表单对象,主要目的是用来异步发送文件上传
      // 参数一:键
      // 参数二:值
      const fd = new FormData()
      fd.append('photo',this.file.files[0])
      this.$toast.loading({
        duration: 1000,
        message:'保存中',
        forbidClick:true
      })
      this.isPreviewShow =false
      //this.$toast.success('保存成功')
    }
  },
  created() {},
  mounted() {}
};
</script>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Vue vant-ui使用van-uploader实现头像上传功能

    效果图: 项目中是使用有赞vant-ui框架实现的头像上传替换功能 代码布局结构: <van-row class="sendInfo"> <van-col span="24" class="flex colorf topInfo p20"> <!--左边头像部分--> <van-uploader :after-read="afterCard" :before-read="be

  • vue实现头像上传功能

    本文实例为大家分享了vue实现头像上传的具体代码,供大家参考,具体内容如下 1.创建项目,使用vue-admin-template框架 2.使用vue命令在终端(开发工具VScode)输入npm install,即可按package.json文件下载 3.导入相关工具包,是上传头像的样式更好看 4.在views编写vue文件 <template>   <div class="app-container">       <el-form-item label

  • 详解Vue+axios+Node+express实现文件上传(用户头像上传)

    Vue 页面的代码 <label for='my_file' class="theme-color"> <mu-icon left value="backup"></mu-icon> 修改头像 </label> <input type="file" ref="upload" name="avatar" id='my_file' style="d

  • 利用nodeJS+vue图片上传实现更新头像的过程

    目录 思路: 1.前端准备 2.node后端服务 总结 思路: 前端通过el-upload将图片传给后端服务,后端通过formidable中间件解析图片,生成图片到静态资源文件夹下(方便前端直接访问),并将图片路径返回给前端,前端拿到图片路径即可渲染头像. 1.前端准备 前端采用vue的el-upload组件,具体用法见官方API.使用代码如下 <!--头像上传--> <el-upload class="avatar-uploader" action="ht

  • vant中如何修改用户的头像

    目录 vant修改用户的头像 vant实现纯客户端用户头像上传预览 vant修改用户的头像 我们的项目中经常会遇到用户个人信息的修改,当然用的组件就是 vant 中的 van-uploader 组件, 但是这个组的是有一个回显功能的, 它的样式不太符合我们, 更改用户头像的场景 对比一下 van-uploader 的本来的样式是这样的 而我们需要修改用户头像的样式是这样的 我们的需求就是 上传完图像之后, 再次点击头像, 还可以再次上传一个新的头像, 这样的需求, van-uploader 中的

  • nodejs中实现修改用户路由功能

    经过前面几次的学习,已经可以做下小功能,今天要实现的是修改用户路由. 一.users_model.js  功能:定义用户对象模型 var mongoose=require('mongoose'), Schema=mongoose.Schema; var UserSchema=new Schema({ username:{type:String,unique:true}, email:String, color:String, hashed_password:String }); mongoose

  • Python的Flask框架中实现登录用户的个人资料和头像的教程

    用户资料页面 在用户资料页面,基本上没有什么特别要强调和介绍的新概念.只需要创建一个含有HTML的新视图函数模板页面即可. 下面是视图函数(项目目录/views.py): @app.route('/user/<nickname>') @login_required def user(nickname): user = User.query.filter_by(nickname = nickname).first() if user == None: flash('不存在用户:' + nickn

  • WordPress中用于获取及自定义头像图片的PHP脚本详解

    get_avatar()(获取头像) get_avatar() 函数用来获取置顶邮箱或者用户的头像代码,在评论列表中非常常用. 这个函数提供一个 get_avatar 过滤器,用来过滤头像的 Html 代码(img 标签). 如果在后台 "设置" 的 "讨论" 里关闭 "显示头像选项" 则返回 False. 用法 get_avatar( $id_or_email, $size, $default, $alt ); 参数 $id_or_email

  • vue vant中picker组件的使用

    1.引入 import { Picker } from 'vant' 2.使用 components: { vanPicker: Picker, } 3.渲染 <van-picker show-toolbar :columns="columns" value-key="text" /> 4.将值push到columns //注意的点vant默认的是text,如果你需要修改需要value-key="你要定义的名字",否则不会渲染 thi

  • SQL Server 2008 数据库中创建只读用户的方法

    在SQL Server 2008中,为了保护数据库的安全,需要给不同的使用者开通不同的访问用户,那么如何简单的控制用户的权限呢?下面我们就创建一个只读用户,给大家学习使用. SQL Server 2008 Microsoft SQLServer Management Studio 1.首先打开[Microsoft SQLServer Management Studio],用管理员账户登录.这里我选的服务器是[local],账户是[windows身份验证],如果是连接远程的服务器,输入远程服务器地

  • NTRights 命令行(DOS)修改用户权限功能详细说明

    此工具系微软官方工具,但系统不自带,需下载 微软官方下载"Windows Server 2003 Resource Kit Tools"安装包 安装后需从%ProgramFiles%\Windows Resource Kits\Tools中把NTRights复制到系统中 本站下载: nright.rar 详解用法:(参数说明系LZ-MyST原创,除登录权限部分) 复制代码 代码如下: 用法:-u xxx xxx为用户/组 -m \\xxx 对远程主机进行操作(默认本地机器) -e xx

  • mysql5.7 修改用户初始密码的方法

    当用户首次安装MySQL数据库时,总是想修改root的初始化密码,我也是,每次都百度一下,下面主要给出一些操作数据库的常用SQL和一些基本概念性的东西. 修改用户的初始化密码: SET PASSWORD = PASSWORD('your new password'); ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER; flush privileges; 创建新的用户: CREATE USER 'username'@'host' IDENTI

  • 在yii中新增一个用户验证的方法详解

    1.为什么要新增一个用户验证:因为我要将网站后台和前台做在同一个yii的应用中.但是前台也包含有会员的管理中心.而这两个用户验证是完全不同的,所以需要两个不同登陆页面,要将用户信息保存在不同的cookie或session中.所以需要在一个应用中增加一个用户验证2.yii的用户验证:在自定义用户验证前,我们首先要弄清楚yii的验证和授权方式.为了验证一个用户,我们需要定义一个有验证逻辑的验证类.在yii中这个类需要实现IUserIdentity接口,不同的类就可以实现不同的验证方 法.网站登陆一般

  • Linux下交互式与非交互式修改用户密码的例子

    最近管理的一批机器,有个需求是要统一修改一个帐号的用户名密码,比如将qa帐号的密码改为1234,后来还为了脚本化,很方便的执行,还使用了非交互式地修改用户的密码.简单记录一下吧. 1. 交互式配置本地用户的密码:passwd 命令 复制代码 代码如下: [root@host_221-81 ~]# passwd qa Changing password for user qa. New password: BAD PASSWORD: it is too short BAD PASSWORD: is

随机推荐