Vue 3 中处理文件上传和响应式更新

Vue 3 中处理文件上传和响应式更新

  • 一、前言
    • 1.创建文件上传组件
    • 2.解释代码
    • 3.在主应用中使用文件上传组件
    • 4.总结


一、前言

在现代 web 开发中,文件上传是一个常见需求。本文将详细介绍如何在 Vue 3 中处理文件上传,并确保上传后的文件列表能够响应式更新。

正确处理文件列表的响应式更新:在 Vue 中,直接修改响应式变量(如使用 .push())可能不会触发视图更新。一般推荐先获取当前列表值并重新赋值。

1.创建文件上传组件

src/components 目录下创建一个新的组件 FileUpload.vue,文件内容如下:

<template><el-uploadaction="http://your-upload-url":on-success="handleFileSuccess":limit="10"list-type="text"multiple><el-button type="primary">点击上传</el-button></el-upload><ul><li v-for="file in wxnrFormFileList" :key="file.id">{{ file.name }}</li></ul>
</template><script>
import { ref } from 'vue'
import axios from 'axios'export default {name: 'FileUpload',setup() {const wxnrFormFileList = ref([])const handleFileSuccess = async (response, file, UploadFiles) => {const fileId = response.data[0]try {const res = await axios.get(`http://your-api-url/fileInfo/${fileId}`)const fileName = res.data[0].fileNamewxnrFormFileList.value = [...wxnrFormFileList.value,{id: fileId,name: fileName,}]ElMessage.success("上传成功")} catch (error) {console.error("获取文件信息失败", error)ElMessage.error("获取文件信息失败")}}return {wxnrFormFileList,handleFileSuccess,}}
}
</script>

2.解释代码

  1. 模板部分

    • 使用 el-upload 组件来处理文件上传。
    • 配置 action 属性为文件上传接口地址。
    • 配置 on-success 事件来处理上传成功后的逻辑。
  2. 响应式变量

    • 使用 ref 创建一个响应式变量 wxnrFormFileList,用于保存上传后的文件列表。
  3. 处理文件上传成功的逻辑

    • handleFileSuccess 方法在文件上传成功后被调用。
    • 从响应数据中提取文件 ID,并通过 API 获取文件名。
    • 更新 wxnrFormFileList 以包含新上传的文件信息。
  4. 显示文件列表

    • 使用 v-for 指令遍历并显示 wxnrFormFileList 中的文件。

3.在主应用中使用文件上传组件

App.vue 中使用我们刚刚创建的 FileUpload 组件:

<template><div id="app"><FileUpload /></div>
</template><script>
import FileUpload from './components/FileUpload.vue'export default {name: 'App',components: {FileUpload,}
}
</script>

4.总结

通过上述步骤,我们成功地在 Vue 3 项目中实现了文件上传功能,并确保上传后的文件列表能够响应式更新。关键点在于:

  • 使用 Vue 3 的 ref 定义响应式变量。
  • 处理文件上传成功后的逻辑,获取文件详细信息并更新列表。
  • 使用 Element Plus 提供的 UI 组件简化文件上传的实现。

希望这篇文章能帮助你更好地理解和实现 Vue 3 中的文件上传功能。如果还有其他问题或需要深入探讨的地方,请随时提出!

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/860465.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux内核编译流程

删除之前编译生成的文件和配置文件 make mrproper生成.config文件 make menuconfig编译 make -j41. No rule to make target ‘debian/canonical-certs.pem‘, needed by ‘certs/x509_certificate_list‘ vim .config 修改CONFIG_SYSTEM_TRUSTED_KEYS为"" 修改C…

理解异步复位,同步释放 ?

在数字电路设计中&#xff0c;复位信号用于初始化系统&#xff0c;使其进入一个已知的状态。复位信号可以是异步的&#xff0c;即不依赖于时钟信号&#xff0c;这种设计方法称为异步复位。然而&#xff0c;为了确保系统在复位解除后能够正确同步和稳定工作&#xff0c;常采用同…

如何把图片转换成pdf格式?图片转PDF方法分享

如何把图片转换成pdf格式&#xff1f;图片转换为PDF格式的重要性不言而喻。PDF文件不仅能够在各种操作系统和设备上保持一致的显示效果&#xff0c;还能确保图片内容的清晰度和质量不受损害。此外&#xff0c;PDF格式支持加密和权限设置&#xff0c;可以保护图片内容不被轻易篡…

FireFox 编译指南2024 Windows10篇-环境准备(一)

1. 引言 在开源浏览器项目中&#xff0c;Firefox因其高性能和灵活性而备受开发者青睐。为了在本地环境中编译和定制Firefox&#xff0c;开发者需要做好充分的环境准备工作。这不仅是编译成功的基础&#xff0c;也是后续调试、优化和二次开发的关键步骤。 编译Firefox是一个复…

深入剖析Tomcat(十二) 详解StandardContext

StandardContext是Context容器的一个标准实现&#xff0c;一般情况下&#xff0c;Tomcat都是使用StandardContext类来创建Context容器。前面讲过&#xff0c;Context容器代表了一个Web应用&#xff0c;Tomcat本身支持部署多个应用&#xff0c;相应的每个应用都会有一个Standard…

C语言 输入输出使用

一、getchar putchar puts #include "stdio.h" /* 跟printf的区别 1.自动加入换行符 2.printf支持多种输出&#xff0c;而puts就是输出字符串 */ int main(){char c;puts("请输入一个字符");cgetchar();puts("你输入的字符是");putchar(c);ret…

实用软件下载:ABBYY Finereader 15最新安装包及详细安装教程

数据表明FineReader PDF提供实用、简易的工具&#xff0c;将纸质文档和PDF结合起来&#xff0c;提高了数字工作场所的效率。我们都知道 即时背景识别:使不可搜索的PDF能够在工作中立即使用。值得一提的是文档转换更精准&#xff1a;OCR技术&#xff0c;它提高了PDF转换、布局保…

基于STM32的简易计算器proteus仿真设计(仿真+程序+设计报告+讲解视频)

基于STM32的简易计算器proteus仿真设计 讲解视频1.主要功能2. 仿真3. 程序4. 设计报告5. 资料清单&下载链接 基于STM32的简易计算器proteus仿真设计(仿真程序设计报告讲解视频&#xff09; 仿真图proteus 8.9 程序编译器&#xff1a;keil 5 编程语言&#xff1a;C语言 …

c语言输出文字颜色

c语言输出文字颜色 在C语言中&#xff0c;输出文字颜色主要是依赖于你的终端或者是你所使用的编译器是否支持这种操作。在Windows的命令提示符&#xff08;cmd&#xff09;中&#xff0c;可以使用ASCII控制码来改变文字颜色&#xff0c;但在Linux或Mac的终端中&#xff0c;通常…

深入JVM:详解JIT即时编译器

文章目录 深入JVM&#xff1a;详解JIT即时编译器一、序言二、基础概念1、何为JIT即时编译2、热点代码 三、HotSpot内置的即时编译器1、C1编译器2、C2编译器3、分层编译3.1 协作流程 四、常见JIT优化技术1、方法内联2、逃逸分析&#xff08;1&#xff09;同步锁消除&#xff08;…

数据结构:栈和队列详解

栈 栈的概念 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守先进后出LIFO&#xff08;Last In First Out&#xff09;的原则。大家可以理解为…

3-自动驾驶车辆路径规划

在自动驾驶领域&#xff0c;轨迹搜索&#xff08;Trajectory Searching&#xff09;和轨迹生成&#xff08;Trajectory Generation&#xff09;是两个密切相关但有所不同的概念&#xff0c;它们都是自动驾驶车辆规划其行驶路径的关键步骤。 轨迹搜索&#xff08;Trajectory Se…

Day60 代码随想录打卡|回溯算法篇---组合

题目&#xff08;leecode T77&#xff09;&#xff1a; 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 方法&#xff1a;本题最直观的解法是使用暴力for循环遍历法&#xff0c;根据k的大小定for循环的嵌套次数&…

Posix消息队列使用总结

Posix在线文档&#xff1a; The Single UNIX Specification, Version 2 (opengroup.org) Linux系统中提供了两种不同接口的消息队列&#xff1a; POSIX消息队列。POSIX为可移植的操作系统接口。System V消息队列。System V 是 AT&T 的第一个商业UNIX版本(UNIX System III)的…

[Python人工智能] 四十六.PyTorch入门 (1)环境搭建、神经网络普及和Torch基础知识

从本专栏开始,作者正式研究Python深度学习、神经网络及人工智能相关知识。前文讲解合如何利用keras和tensorflow构建基于注意力机制的CNN-BiLSTM-ATT-CRF模型,并实现中文实体识别研究。这篇文章将介绍PyTorch入门知识。前面我们的Python人工智能主要以TensorFlow和Keras为主,…

python开发之代码规范

1、背景 现实中进行python代码开发&#xff0c;需要遵循一定的规范&#xff0c;这个规范对后期维护起到的作用很大。 2、规范 https://peps.python.org/pep-0008/#a-foolish-consistency-is-the-hobgoblin-of-little-minds

Java中的设计模式:实战案例分享

Java中的设计模式&#xff1a;实战案例分享 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 设计模式是软件开发中的宝贵工具&#xff0c;它们为常见的问题提供…

Redis 7.x 系列【5】 基础命令

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Redis 版本 7.2.5 源码地址&#xff1a;https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 概述2. 常用命令2.1 KEYS2.2 DEL2.3 EXISTS2.4 EXPIRE2.5 TTL2.6 RENAME2.7 TYPE2.…

【Linux】进程间通信_4

文章目录 七、进程间通信1. 进程间通信分类systeam V共享内存消息队列信号量 未完待续 七、进程间通信 1. 进程间通信分类 systeam V共享内存 进程间通信的本质就是让不同进程看到同一份资源。而systeam V是通过让不同的进程经过页表映射到同一块内存空间&#xff08;操作系…

LED显示屏中什么是静态驱动?什么是扫描驱动?两者的区别是什么?

随着科技的飞速发展&#xff0c;LED显示屏作为现代信息显示技术的重要组成部分&#xff0c;正以其独特的优势引领着显示行业的革新。近日&#xff0c;LED显示屏市场呈现出蓬勃的发展态势&#xff0c;技术创新不断推动行业向前发展&#xff0c;让LED显示屏无论是在商场的广告牌、…