cube-ui 弹窗组件的用法_elementui的<elupload>组件实现文件上传,请注意!!

本文介绍了在使用Element-UI的上传组件el-upload时遇到的一个常见问题:当文件上传操作发生在弹框内,如果在上传过程中关闭弹框,会导致文件列表被清空,进而引发`undefined`错误。问题的根本在于异步操作未完成就关闭了弹框。解决方法是利用Promise进行异步控制,确保所有操作完成后再关闭弹框。通过Promise的使用,可以避免在关闭弹框时对已销毁组件的引用,从而解决此问题。
摘要由CSDN通过智能技术生成

用element-ui 的 >组件实现文件上传,出现以下错误

c18fdd06d4b31a88849742e945870ee7.png

原因很简单,由于这个表单是在一个弹框里面的,所有当弹框关闭时/的所有组件都不能再次引用,比如说file,file-list属性时,就会出现undefined错误 ,所以在使用弹窗的时候一定要注意异步操作时先所有操作完毕才可以关闭弹框

什么是异步操作?

同步指的是一次只能完成一件任务。如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推。

异步指的是每一个任务有一个或多个回调函数(callback),前一个任务结束后,不是执行后一个任务,而是执行回调函数,后一个任务则是不等前一个任务结束就执行,所以程序的执行顺序与任务的排列顺序是不一致的、异步的。

常见的异步

1,点击时间,

2,定时器,

3,AJAX请求,

常见的操作方法

1,回调函数,这是异步编程最基本的方法。

2,事件监听

3,发布/订阅

4,Promises对象

简单总结一下了关于异步的知识点,以后的文章可以详细介绍异步以及这四种关于异步的操作方法。接下来主要讲element-ui 的 >组件实现文件上传出行的报错。原因上面已经告诉大家,具体怎么解决呢,先上图。

这里是一个el-upload组件

9c4c7b37b8bdd334cb7644d7c92226dd.png

5da413fee42151547a943d815b0f2e5d.png

当我选择上传文件点击确定自定义提交时,出现了报错,

Uncaught TypeError: Cannot set property 'status' of undefined

bbcf4a887fd73691082cde657b9377c9.png

点击确认之后,我们上传文件时,关闭了弹窗组件,清空了文件列表。由于这个表单是在一个弹框里面的,所有当弹框关闭时的所有组件都不能再次引用,所以出现了以上报错。

解决办法

通过promise基本用法进行异步操作,就可以解决这个问题了。

Promise的基本用法:// resolve代表成功 reject失败 都是一个函数let p = new Promise(function(reslove,reject){    //reslove('成功')  //状态由等待变为成功,传的参数作为then函数中成功函数的实参    reject('失败')  //状态由等待变为失败,传的参数作为then函数中失败函数的实参})//then中有2个参数,第一个参数是状态变为成功后应该执行的回调函数,第二个参数是状态变为失败后应该执行的回调函数。p.then((data)=>{    console.log('成功'+data)},(err)=>{    console.log('失败'+err)})

根据上面所写promise的基本用法来就解决我们的问题。

9c3f4e3b7a3c97f897027975d40166aa.png

注意:this指向问题。

今天就给大家分享这么多,如果有小伙伴有更好的方法,或者小编哪里有问题欢迎大家指出,公众号回复。

做最专业最懂你的前端开发平台,提供你最需要的开发学习资源。我们专注于前端开发技术的学习与交流,我们坚持,每天进步一小步,人生进步一大步!关注趣玩前端,与我们一起学习进步。

cfc2d620f1f902efb5cef2abdf12282f.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值