前端基础学习-el-upload上传一次后禁止删除上传的el-upload-list__item

该博客介绍了一个在前端开发中使用el-upload组件实现批量上传文件后禁止删除和再次上传的解决方案。通过设置`disabled`属性并监听`on-change`事件来控制上传状态,当有文件上传后,禁用上传按钮和删除功能。提供了相关代码示例展示如何实现这一功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

在最近的开发中遇到了一个需求是,批量上传文件后,禁止对上传的文件进行删除与再次上传的功能。(这里有另外的按钮全部清空上传的文件)

解决方法

这里其实只要在el-upload组件中添加一个disabled就行,但是我这里根据是否上传过文件去禁用删除按钮了
在这里插入图片描述

代码

html

			<el-upload
              class="upload-demo"
              action="https://jsonplaceholder.typicode.com/posts/"
              multiple
              :limit="3"
              :show-file-list="true"
              :class="{ disabled: uploadDisabled }"
              :on-change="handleUploadChange"
              :auto-upload="false"
              :disabled="abandonFileList.length === 0 ? false : true"
              :file-list="abandonFileList">
              <el-button size="small" type="primary">点击上传</el-button>
              <div slot="tip" class="el-upload__tip">上传后禁止上传与删除</div>
            </el-upload>

js

	handleUploadChange (file, fileList) {
      this.abandonFileList = fileList
    }

效果

在这里插入图片描述
具体的el-upload-list__item不再支持删除,且按钮无法点击再次上传

### 上传组件的使用与问题解决 在前端开发中,`upload-file-list` 和 `el-upload-list` 是常见的文件上传相关组件。以下将详细介绍它们的使用方法以及可能遇到的问题及其解决方案。 #### 1. `el-upload-list` 的基本使用 `el-upload-list` 是 Element Plus 中的一个内部组件,用于展示已上传的文件列表。通常情况下,它会与 `el-upload` 配合使用。以下是其基本用法: ```vue <template> <el-upload action="https://jsonplaceholder.typicode.com/posts/" :file-list="fileList"> <el-button size="small" type="primary">点击上传</el-button> </el-upload> </template> <script> export default { data() { return { fileList: [{ name: 'file1', url: 'https://example.com/file1' }] }; } }; </script> ``` 通过设置 `file-list` 属性,可以初始化文件列表[^2]。每个文件对象需要包含 `name` 和 `url` 属性,分别表示文件名和文件的访问地址。 #### 2. 解决 `el-upload-list` 的闪动问题 在某些场景下,`el-upload-list` 可能会出现闪动现象。这通常是由于样式加载或状态更新不及时导致的。可以通过自定义样式来避免此问题: ```scss <style lang="scss" scoped> ::v-deep .el-upload-list__item.is-ready, ::v-deep .el-upload-list__item.is-uploading { display: none !important; } </style> ``` 上述代码通过隐藏 `is-ready` 和 `is-uploading` 状态下的文件项,有效解决了闪动问题[^1]。 #### 3. `upload-file-list` 的扩展使用 `upload-file-list` 并非标准的 Element Plus 组件,可能是某个项目中的自定义封装组件。如果需要实现类似功能,可以参考以下代码: ```vue <template> <ul class="upload-file-list"> <li v-for="(file, index) in fileList" :key="index"> {{ file.name }} <a :href="file.url" target="_blank">查看</a> <button @click="removeFile(index)">删除</button> </li> </ul> </template> <script> export default { data() { return { fileList: [ { name: 'file1', url: 'https://example.com/file1' }, { name: 'file2', url: 'https://example.com/file2' } ] }; }, methods: { removeFile(index) { this.fileList.splice(index, 1); } } }; </script> ``` 该示例展示了如何手动构建一个文件列表,并提供删除功能[^3]。 #### 4. 常见问题及解决方案 - **问题:上传完成后文件未显示在列表中** 确保 `file-list` 属性正确绑定到组件上,并且在上传成功后动态更新该数组[^2]。 - **问题:文件上传过程中出现卡顿或闪动** 使用上述样式调整方案,隐藏不必要的状态项[^1]。 - **问题:无法自定义文件列表样式** 使用 `::v-deep` 或 `deep` 选择器覆盖默认样式[^4]。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值