2019-08-23 解决elementUI 中 el-avatar组件头像切换不更新问题

最近用el-avatar组件做了头像上传实时浏览的容器,发现头像不更新...数据更新之后,图片并没有更新,DOM绑定的图片不会变。
经过排查发现上传的图片地址拿得到也能正常访问,说明图片链接本身没有问题。el-avatar组件绑定的:src赋值也能打印,说明数据也能成功绑定。


image.png
    <el-avatar :src="userForm.userHead"></el-avatar>

由于头像上传需要时间,起初以为是异步DOM更新的问题,于是用了this.$nexTick来重新设置头像链接更新头像

     this.$nextTick(()=>{
          this.userForm.userHead=url;
     })

解决了上传头像不能实时更新的问题...,但是问题又来了,由于这是用户表单,在做数据回填的时候,假如用户头像地址是无法正常访问的情况(比如头像地址文件被后端删除了),那么这时候我们想重新上传,头像又无法实时更新了。$nextTick也不管用。。。那么我自然而然想到了让DOM强制更新...

    this.$set(this.userForm,'userHead',url)

然鹅....并没有什么卵用。。。。
这时候百度看到一篇文章说如果使用了vue-lazyload懒加载,图片不更新就加:key
原文地址:
https://www.cnblogs.com/MrLee/p/10899447.html
看了下自己的webpack配置,并没有使用vue-lazyload懒加载,但是抱着试一试的态度也加上了:key

    <el-avatar :src="userForm.userHead" :key="userForm.userHead"></el-avatar>

啥都好使了....根本不用其他方式去更新DOM。
在开发中遇到了很多次没有key值导致的DOM不更新的问题,由此可见key索引在性能优化上的重要性。。。
仅以此记录一下这个解决问题的过程和思路,让更多碰到此问题的踩坑伙伴们能够受益....

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 14,753评论 0 15
  • 分析论坛项目 数据库:总共两个users:用户数据,管理用户资料信息;用户名;密码头像comment:评论数据,管...
    果木山阅读 3,064评论 0 0
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,872评论 1 32
  • 33、JS中的本地存储 把一些信息存储在当前浏览器指定域下的某一个地方(存储到物理硬盘中)1、不能跨浏览器传输:在...
    萌妹撒阅读 6,423评论 0 2
  • 不言摄影
    不言简书阅读 1,589评论 0 1

友情链接更多精彩内容