Element UI 上传文件组件多选时报错Cannot set property ‘status’ of null 的解决方案

上传多张图片出现报错信息:Cannot set property ‘status’ of null

问题分析

每次上传都会促发 handleBeforeUpload 和 handleUploadSuccess,传几张就会触发几次,应该是 handleUploadSuccess 上传回调方法执行多次 $emit 引起的,fileList是只读的,上传多图时,第一张图片file对象有值,后面再修改就报错了。

解决方案

声明一个number变量用于记录上传图片数量,上传成功回调后通过判断图片数量与number一致时,执行一次$emit,使用 uploadList 数组用来临时保存上传的多图数组。

data 中增加两个变量

uploadList:[],
number:0,

修改两个方法

1.handleBeforeUpload
// 上传前 loading 加载,此方法的执行,始终在 handleUploadSuccess之前的(多图时,全部图片校验过后才会去上传)
handleBeforeUpload(file) {

// 放在末尾
this.number++;
}

2.handleUploadSuccess
// 上传成功回调
handleUploadSuccess(res) {
this.uploadList.push({ name: res.fileName, url: res.fileName });
if(this.uploadList.length===this.number){
this.fileList = this.fileList.concat(this.uploadList);
this.uploadList = [];
this.number = 0;
this.$emit("input", this.listToString(this.fileList));
}
this.loading.close();
},

猜你喜欢

发表评论

最新发布