Vue 3 动态 ref 的使用方式(表格)

一、问题描述

先给大家简单介绍一下问题背景。我正在开发的项目中,有一个表格组件,其中一列是分镜描述,需要支持视频上传功能。用户可以为每一行的分镜描述上传对应的视频示例。然而,在实现过程中,出现了一个严重的问题:当表格有多行数据时,点击某一行的本地上传按钮,选择文件后,数据却总是跑到最后一行。这显然不符合预期,严重影响了用户体验和功能的正确性。

二、解决

1、创建了一个inputRefs对象来存储input元素的引用:

javascript 复制代码
const shotVideInputRefs = ref<Record<string, HTMLInputElement>>({});

2、在模板中,通过以下方式绑定ref

html 复制代码
 <input :key="row.id" :ref="(el) => (shotVideInputRefs[row.id] = el as HTMLInputElement)" type="file" @change="handleShotFileChange(row, $event)" />

3、触发文件上传对话框的方法:根据当前行的id来获取对应的input引用并触发点击事件:

javascript 复制代码
const triggerShotVideoInput = (rowId) => {
  if (shotVideInputRefs.value[rowId]) {
    shotVideInputRefs.value[rowId].click();
  }

};
相关推荐
烛阴39 分钟前
从0到1掌握盒子模型:精准控制网页布局的秘诀
前端·javascript·css
前端工作日常4 小时前
我理解的`npm pack` 和 `npm install <local-path>`
前端
李剑一4 小时前
说个多年老前端都不知道的标签正确玩法——q标签
前端
嘉小华4 小时前
大白话讲解 Android屏幕适配相关概念(dp、px 和 dpi)
前端
姑苏洛言4 小时前
在开发跑腿小程序集成地图时,遇到的坑,MapContext.includePoints(Object object)接口无效在组件中使用无效?
前端
七八书4 小时前
Vue3 组件通信全解析:从基础到进阶的实用指南
vue.js
奇舞精选4 小时前
Prompt 工程实用技巧:掌握高效 AI 交互核心
前端·openai
用户3802258598244 小时前
vue3源码解析:模块总览
vue.js
Danny_FD4 小时前
React中可有可无的优化-对象类型的使用
前端·javascript
用户757582318555 小时前
混合应用开发:企业降本增效之道——面向2025年移动应用开发趋势的实践路径
前端