最近接触到elementUI的上传组件,一路顺畅,就是在上传之后总是发现有闪动的现象,博主对其进行深入研究后发现,其闪动原因,是因为使用的file-list并不会自动添加上传了的图片,而需要由我们来人工来添加,而添加则必须使用on-success事件中自带的参数去做赋值操作,心中有一万只草泥马奔腾而过的赶脚有木有?

闪动问题复现

先是出现闪动问题的GIF图以及其问题代码,如下:

可以非常明显的看到,图片上传成功后,图片会有一个先向右,然后停顿片刻摆着位置后,返回左侧的现象。

<!-- 上传组件,其中file-list绑定的参数为infoForm.effect -->
<el-uploadname="file"class="upload-demo":action="root + 'goods/uploadImageToAliOss'"list-type="picture-card":on-preview="patternRealPicPreview":on-success="handleUploadPatternListSuccess":on-remove="patternRemove":file-list="infoForm.effect":data="{ dir: 'goodsMask' }":headers="uploaderHeader":before-upload="handleBeforeUpload"
><i class="el-icon-plus"></i>
</el-upload>// 对应的事件回调如下,这里只看上传成功后的回调事件
handleUploadPatternListSuccess(response) {// 出现问题的版本1this.infoForm.effect.push({url: response.data})// 出现问题的版本2let list = []this.infoForm.effect.forEach((item) => {list.push(item)})list.push({url: response.data,percentage: 100,status: 'success',response: response,})this.infoForm.effect = list
}

博主是在上传成功的回调事件中,对effect做数组做处理。
版本1中博主直接对effect数组做push操作,博主此时便怀疑会不会是push捣的鬼,故出现了版本2。
版本2中博主是重新定义了一个list数组,将原本effect中的数据拿出来,再组合上新上传的图片数据,最后将这个新的list赋给effect。但是这样做之后,还是出现了问题。

寻求解决方案

遇事不决查文档,博主很果断,直接上官方文档,找到了on-success事件其实还有两个参数,分别是filefileList
其中file是本次上传成功的文件信息,fileList是已上传成功的文件列表汇总。
博主想着,要不就拿这两个参数试一下,一番捣鼓之后,惊喜的发现还真的成功了!
下边放成功之后的效果图以及相应的实现代码:

可以非常明显的看出来,闪动的现象已经消失了。
而其改动非常小:

handleUploadPatternListSuccess(response, file, fileList) {// 成功实现的版本1this.infoForm.effect.push(file)// 成功实现的版本2this.infoForm.effect = fileList
}

无非就是使用其事件自带的参数进行push或者直接重新赋值的操作。

总结

至此问题已经解决,而解决方案其实令博主有点窒息,博主并不清楚该框架的底层究竟对这两个参数做了什么操作,为什么我们自己定义的list作重新赋值也不行呢?
博主对此只能浅显地将其打印出来看看,第一张图为我们自己定义的新的list,第二张图则为其回调事件中的参数。


咋一看,其实其中有什么数据,对是否闪动并没有任何影响(由上边出现问题的代码版本2可知),而setget的构造函数感觉应该也没有影响,同样对于数组项原型__proto__则是一样的。
那么,问题就只有可能出在__ob__身上了,博主查了一下,这个东西是Vue底层做双向数据绑定而添加的,仔细想想确实,使用新数组直接作赋值,是没有__ob__这个东西的。
只能感慨学无止境,继续加油吧!

饿了么UI组件库中,Upload组件上传闪动的解决相关推荐

  1. vant 组件库中的 图片上传组件(多张图片上传,删除图片传自定义参数)

    html部分 js部分 图片上传前,限制图片格式.图片上传后,上传七牛云接口返回图片url,赋值给图片路径变量. 图片删除 坑:vant上传组建中内置的删除事件,默认携带两个参数,file和detai ...

  2. 使用ngZorro中Upload自定义上传时XMLHttpRequest问题解决方法

    使用ngZorro中Upload自定义上传时XMLHttpRequest问题解决方法 使用angular框架写前端的用户一般都比较喜欢用ngZorro,本人最近在使用ngZorro中的Upload自定 ...

  3. 微信小程序组件库解析:图片上传与排序组件yImgPro

    yunUI是笔者开源的微信小程序功能库.目前其中包含了一些复杂的功能组件.方便使用.未来它将分为组件.样式.js三者合为一体,但分别提供. 本文所用代码皆来源于组件库中的yImgPro组件.详细代码可 ...

  4. Material组件库中table组件的sticky属性

    sticky 英文字面意思是粘,粘贴,所以姑且称之为粘性定位 .我们先看下在Angular中如何使用. 当我们需要固定住头部的时候,只需要在mat-header-row 加上 sticky: true ...

  5. 用WebClinet实现SharePoint上文档库中文件的上传与下载

    微软的SharePoint 提供了强大的文档管理功能,能够创建各种类型的文档库,并对文档进行相应的管理.所以我们的产品也打算将文件用SharePoint来管理,实现文档的共享访问.于是,就产生了用客户 ...

  6. 饿了么UI组件库中,Image组件预览图片错位的解决

    使用过elementUI组件库中的Image组件基本都知道,其组件会自带一个图片预览功能,仅需要通过preview-src-list传入需要预览的图片url列表即可实现点击预览. 博主使用了此功能,进 ...

  7. Henry前端笔记之 UI组件库中table与slot相关理解

    Henry前端笔记之 UI组件库中table与slot相关理解 作用域插槽: 解构赋值基础:https://developer.mozilla.org/zh-CN/docs/Web/JavaScrip ...

  8. vue + element 顶部二级菜单_揭秘vue/react组件库中5个quot;作者不造的轮子quot;

    点击上方"前端公虾米"关注最新前端资讯 来源: 铁皮饭盒https://juejin.im/post/5d89cd156fb9a06acb3ee19e ? 这五个轮子其实是5个纯j ...

  9. 利用vantUI组件库中的Field 输入框、Cell 单元格完成金额数字框的数字转金额格式和金额大写

    近期公司的任务需要这个功能,利用vantUI组件库中的Field 输入框.Cell 单元格完成金额数字框的数字转金额格式和金额大写 1.首先写工具类utils.js // 将数字转换成金额千字文格式显 ...

  10. ant design vue 中Upload组件如何自定义文件列表的样式

    ant design vue 中Upload组件如何自定义文件列表的样式 问题 历程 UploadList 组件源码 h() 方法 实现 注 问题 技术:vue.ant design vue 在开发项 ...

最新文章

  1. shiro和Spring整合使用注解时没有执行realm的doGetAuthorizationInfo回调方法的解决
  2. UVa 10055 - Hashmat the Brave Warrior
  3. 优盘中发现计算机病毒怎么办,【网警课堂】教你解决U盘使用中出现的各种问题!...
  4. 《JavaScript 标准参考教程》阮一峰
  5. hazelcast集群配置_使用HazelCast进行Hibernate缓存:基本配置
  6. 前端学习(1885)vue之电商管理系统电商系统之首页路由的重定向
  7. mac怎么查node版本_py2neo基本操作(v4版本,亲测有效)
  8. win8 网络受限解决
  9. c++builder 运行网站的api_欧美音乐网站Python爬虫项目实战
  10. 【转】字符串编辑距离
  11. Android ProGuard 代码压缩混淆与打包优化
  12. Map集合的4种遍历方式
  13. shell 命令set -e的作用
  14. 本人CSDN资源重传、0积分获取的方法以及重要声明(长期有效)
  15. html+js实现分页功能
  16. linux趋势杀毒安装目录,Linux 杀毒软件ClamAV安装部署
  17. google工具栏中的自定义搜索按钮
  18. 学习笔记(32):Google开发专家带你学 AI:入门到实战(Keras/Tensorflow)(附源码)-模型微调(青出于蓝胜于蓝)...
  19. 网安必备技能||操作系统中间件安全加固手册(附下载地址)
  20. 记一个typeorm问题 Main alise is not set

热门文章

  1. 语义分割之pspnet
  2. 【AT91SAM9261EK】u-boot 2022 tftpboot 烧写根文件系统
  3. 记录|深度学习100例-卷积神经网络(CNN)minist数字分类 | 第1天
  4. glide加载gif图不显示动画_Glide 加载gif的一些个人总结
  5. 【ffmpeg】音频采集
  6. 搭建 Vue 开发环境
  7. pyaudio音频录制
  8. Taro框架中开发H5使用微信分享
  9. 探索ESP8285(3)通过EMQX服务器点亮一个LED灯
  10. 加解密算法 之base64 原理