element UI组件库中,Upload组件上传闪动问题

摘要:
exportdefault{data(){return{imgList:[]}},methods:{//文件上传成功时的钩子onSuccess{//直接对imgList数组做push操作this.imgList.push}}}解决方案直接上官方文档,找到了on-success事件其实还有两个参数,分别是file跟fileList,其中file是本次上传成功的文件信息,fileList是已上传成功的文件列表汇总。博主对此只能浅显地将其打印出来看看,第一张图为我们自己定义的新的list,第二张图则为其回调事件中的参数。其实其中有什么数据,对是否闪动并没有任何影响,而set跟get的构造函数感觉应该也没有影响,同样对于数组项原型__proto__则是一样的。

闪动问题复现

在上传之后总是发现有闪动的现象,对其进行深入研究后发现,其闪动原因,是因为使用的file-list并不会自动添加上传了的图片,而需要由我们来人工来添加,而添加则必须使用on-success事件中自带的参数去做赋值操作。

element UI组件库中,Upload组件上传闪动问题第1张

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

<template>
  <el-upload name="file" list-type="picture-card" :file-list="imgList" :on-success="onSuccess">
    <i class="el-icon-plus"></i>
  </el-upload>
</template>

<script>export default{
  data() {
    return{
      imgList: []
    }
  },
  methods: {
    //文件上传成功时的钩子
onSuccess(res, file, fileList) {
      //直接对imgList数组做push操作
      this.imgList.push({ url: res.data.fileurl })
    }
  }
}
</script>

解决方案

直接上官方文档,找到了on-success事件其实还有两个参数,分别是file跟fileList,其中file是本次上传成功的文件信息,fileList是已上传成功的文件列表汇总。

methods: {
    //文件上传成功时的钩子
onSuccess(res, file, fileList) {
      //成功实现的版本1
      this.imgList.push(file);
      //成功实现的版本2
      this.imgList =fileList;
    }
  }

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

成功了

element UI组件库中,Upload组件上传闪动问题第2张

总结

至此问题已经解决,而解决方案其实令博主有点窒息,博主并不清楚该框架的底层究竟对这两个参数做了什么操作,为什么我们自己定义的list重新赋值也不行呢?

博主对此只能浅显地将其打印出来看看,第一张图为我们自己定义的新的list,第二张图则为其回调事件中的参数。

element UI组件库中,Upload组件上传闪动问题第3张

element UI组件库中,Upload组件上传闪动问题第4张

其实其中有什么数据,对是否闪动并没有任何影响,而setget的构造函数感觉应该也没有影响,同样对于数组项原型__proto__则是一样的。
那么,问题就只有可能出在__ob__身上了,博主查了一下,这个东西是Vue底层做双向数据绑定而添加的,仔细想想确实,使用新数组直接作赋值,是没有__ob__这个东西的。

免责声明:文章转载自《element UI组件库中,Upload组件上传闪动问题》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇selenim之ActionChains 用法endnote X7使用方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Java关于数组对象赋值与指针

在实现PageRank算法中犯了两个错误, 1:在对double类型赋值时,除法中没有将分母设置为double类型,而是int类型,导致出现商为0的结果错误,导致推迟 2:当定义两个数组时,对数组赋值时,忘记了,数组是对象的特点直接nowRank=resultRank; 其中resultRank又重新赋值,所以导致nowRank中元素值也发生变化,因为数组...

layui select 下拉框 级联 动态赋值 与获取选中值

//下拉框必须在 里 不然监听事件没有作用 <div class="layui-form" > <div class="layui-inline"> <label class="layui-form-label">选择项目:</label>...

Python的变量

目标 变量的引用 可变和不可变类型 局部变量和全局变量 01. 变量的引用 变量 和 数据 都是保存在 内存 中的 在 Python 中 函数 的 参数传递 以及 返回值 都是靠 引用 传递的 1.1 引用的概念 在 Python 中 变量 和 数据 是分开存储的 数据 保存在内存中的一个位置 变量 中保存着数据在内存中的地址 变量 中 记录数据...

原创: 自定义tabs切换组件并使用(微信小程序中

1)TabsTop.wxml   此案例是在微信小程序中 <!-- components/Tabs/TabsTop.wxml --> <text>components/Tabs/TabsTop.wxml</text> <button type="primary">组件TabsTop</button&...

从零开始的野路子React/Node(9)Antd + multer实现文件上传

最近心血来潮,打算自己捣腾个web app来练练手(虽然大概率会半路弃坑……),其中有一部分是关于文件上传的,在实现的过程中遇到了一些坑,于是打算把血泪教训都记录下来。 前端的部分采用了Antd,不得不说真是香,至少比我司内部的前端库香了1000倍……事半功倍。后端部分则主要通过multer来实现,目测应该是一种比较通用的做法? 1、捯饬前端 首先我们新建...

layui给select下拉框赋值

转: layui给select下拉框赋值 layui给select下拉框赋值 //重新渲染表单函数 function renderForm() { layui.use('form', function() { var form = layui.form(); //...