饿了么UI组件库中,Upload组件上传闪动的解决
最近接触到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
事件其实还有两个参数,分别是file
跟fileList
,
其中file
是本次上传成功的文件信息,fileList
是已上传成功的文件列表汇总。
博主想着,要不就拿这两个参数试一下,一番捣鼓之后,惊喜的发现还真的成功了!
下边放成功之后的效果图以及相应的实现代码:
可以非常明显的看出来,闪动的现象已经消失了。
而其改动非常小:
handleUploadPatternListSuccess(response, file, fileList) {// 成功实现的版本1this.infoForm.effect.push(file)// 成功实现的版本2this.infoForm.effect = fileList
}
无非就是使用其事件自带的参数进行push
或者直接重新赋值的操作。
总结
至此问题已经解决,而解决方案其实令博主有点窒息,博主并不清楚该框架的底层究竟对这两个参数做了什么操作,为什么我们自己定义的list
作重新赋值也不行呢?
博主对此只能浅显地将其打印出来看看,第一张图为我们自己定义的新的list
,第二张图则为其回调事件中的参数。
咋一看,其实其中有什么数据,对是否闪动并没有任何影响(由上边出现问题的代码版本2可知),而set
跟get
的构造函数感觉应该也没有影响,同样对于数组项原型__proto__
则是一样的。
那么,问题就只有可能出在__ob__
身上了,博主查了一下,这个东西是Vue底层做双向数据绑定而添加的,仔细想想确实,使用新数组直接作赋值,是没有__ob__
这个东西的。
只能感慨学无止境,继续加油吧!
饿了么UI组件库中,Upload组件上传闪动的解决相关推荐
- vant 组件库中的 图片上传组件(多张图片上传,删除图片传自定义参数)
html部分 js部分 图片上传前,限制图片格式.图片上传后,上传七牛云接口返回图片url,赋值给图片路径变量. 图片删除 坑:vant上传组建中内置的删除事件,默认携带两个参数,file和detai ...
- 使用ngZorro中Upload自定义上传时XMLHttpRequest问题解决方法
使用ngZorro中Upload自定义上传时XMLHttpRequest问题解决方法 使用angular框架写前端的用户一般都比较喜欢用ngZorro,本人最近在使用ngZorro中的Upload自定 ...
- 微信小程序组件库解析:图片上传与排序组件yImgPro
yunUI是笔者开源的微信小程序功能库.目前其中包含了一些复杂的功能组件.方便使用.未来它将分为组件.样式.js三者合为一体,但分别提供. 本文所用代码皆来源于组件库中的yImgPro组件.详细代码可 ...
- Material组件库中table组件的sticky属性
sticky 英文字面意思是粘,粘贴,所以姑且称之为粘性定位 .我们先看下在Angular中如何使用. 当我们需要固定住头部的时候,只需要在mat-header-row 加上 sticky: true ...
- 用WebClinet实现SharePoint上文档库中文件的上传与下载
微软的SharePoint 提供了强大的文档管理功能,能够创建各种类型的文档库,并对文档进行相应的管理.所以我们的产品也打算将文件用SharePoint来管理,实现文档的共享访问.于是,就产生了用客户 ...
- 饿了么UI组件库中,Image组件预览图片错位的解决
使用过elementUI组件库中的Image组件基本都知道,其组件会自带一个图片预览功能,仅需要通过preview-src-list传入需要预览的图片url列表即可实现点击预览. 博主使用了此功能,进 ...
- Henry前端笔记之 UI组件库中table与slot相关理解
Henry前端笔记之 UI组件库中table与slot相关理解 作用域插槽: 解构赋值基础:https://developer.mozilla.org/zh-CN/docs/Web/JavaScrip ...
- vue + element 顶部二级菜单_揭秘vue/react组件库中5个quot;作者不造的轮子quot;
点击上方"前端公虾米"关注最新前端资讯 来源: 铁皮饭盒https://juejin.im/post/5d89cd156fb9a06acb3ee19e ? 这五个轮子其实是5个纯j ...
- 利用vantUI组件库中的Field 输入框、Cell 单元格完成金额数字框的数字转金额格式和金额大写
近期公司的任务需要这个功能,利用vantUI组件库中的Field 输入框.Cell 单元格完成金额数字框的数字转金额格式和金额大写 1.首先写工具类utils.js // 将数字转换成金额千字文格式显 ...
- ant design vue 中Upload组件如何自定义文件列表的样式
ant design vue 中Upload组件如何自定义文件列表的样式 问题 历程 UploadList 组件源码 h() 方法 实现 注 问题 技术:vue.ant design vue 在开发项 ...
最新文章
- shiro和Spring整合使用注解时没有执行realm的doGetAuthorizationInfo回调方法的解决
- UVa 10055 - Hashmat the Brave Warrior
- 优盘中发现计算机病毒怎么办,【网警课堂】教你解决U盘使用中出现的各种问题!...
- 《JavaScript 标准参考教程》阮一峰
- hazelcast集群配置_使用HazelCast进行Hibernate缓存:基本配置
- 前端学习(1885)vue之电商管理系统电商系统之首页路由的重定向
- mac怎么查node版本_py2neo基本操作(v4版本,亲测有效)
- win8 网络受限解决
- c++builder 运行网站的api_欧美音乐网站Python爬虫项目实战
- 【转】字符串编辑距离
- Android ProGuard 代码压缩混淆与打包优化
- Map集合的4种遍历方式
- shell 命令set -e的作用
- 本人CSDN资源重传、0积分获取的方法以及重要声明(长期有效)
- html+js实现分页功能
- linux趋势杀毒安装目录,Linux 杀毒软件ClamAV安装部署
- google工具栏中的自定义搜索按钮
- 学习笔记(32):Google开发专家带你学 AI:入门到实战(Keras/Tensorflow)(附源码)-模型微调(青出于蓝胜于蓝)...
- 网安必备技能||操作系统中间件安全加固手册(附下载地址)
- 记一个typeorm问题 Main alise is not set