vue+ts+elementPlus 解决清空数据关闭弹窗,再次打开的时候数据未清空

遇到的问题:明明已经清空数据了,进度条清空成功,并且文件log出来都表示已经清空了,但是再次打开弹窗的时候还是有数据显示。

上传成功之后,再次打开dialog还是会显示文件标题:

解决办法:使用Date.now()

原理说明:ElUpload 是一个 Vue 组件,它在重新渲染时会根据 key 属性来判断是否需要重建组件实例。当你改变 key 的值时,Vue 会销毁旧的组件实例并创建一个新的组件实例,这就等同于“重置”了组件的状态。

为什么使用 Date.now()

  1. 生成唯一的值: 每次调用 Date.now() 都会返回一个当前的时间戳,这个值是唯一的,因此可以确保每次更新 uploadKey 的值都不一样。

  2. 强制重渲染: 当 uploadKey 改变时,Vue 会检测到 ElUpload 组件的 key 发生变化,进而销毁并重新创建这个组件,确保组件的所有状态(如上传的文件)都被清空。

  3. 简单易用: Date.now() 的调用简洁、无副作用,适合用来生成需要频繁更新的唯一值。

使用date.now之后再不刷新页面的情况下,再次打开弹框就不会出现任何数据

代码:

<el-upload :key="uploadKey" ...> 
  <!-- 你的上传按钮内容 -->
</el-upload>


-----------------------分割线---------------
const uploadKey = ref(Date.now());

const clearFormData = () => {
  uploadKey.value = Date.now(); // 强制重新渲染 ElUpload
  formData.filename = ""; // 清空文件名
  uploadProgress.value = 0; // 重置进度条
};

const closeDialog = () => {
  dialogVisible.value = false;
  clearFormData(); // 调用清空数据的方法
};

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值