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();
  }

};
相关推荐
清汤饺子5 小时前
OpenClaw 本地部署教程 - 从 0 到 1 跑通你的第一只龙虾
前端·javascript·vibecoding
颜酱5 小时前
图的数据结构:从「多叉树」到存储与遍历
javascript·后端·算法
爱吃的小肥羊7 小时前
比 Claude Code 便宜一半!Codex 国内部署使用教程,三种方法任选一!
前端
IT_陈寒9 小时前
SpringBoot项目启动慢?5个技巧让你的应用秒级响应!
前端·人工智能·后端
树上有只程序猿9 小时前
2026低代码选型指南,主流低代码开发平台排名出炉
前端·后端
橙某人9 小时前
LogicFlow 小地图性能优化:从「实时克隆」到「占位缩略块」!🚀
前端·javascript·vue.js
高端章鱼哥10 小时前
为什么说用OpenClaw对打工人来说“不划算”
前端·后端
大脸怪10 小时前
告别 F12!前端开发者必备:一键管理 localStorage / Cookie / SessionStorage 神器
前端·后端·浏览器
Mr_Mao10 小时前
我受够了混乱的 API 代码,所以我写了个框架
前端·api
小徐_233310 小时前
向日葵 x AI:把远程控制封装成 MCP,让 AI 替我远程控制设备
前端·人工智能