当前位置: 首页 > news >正文

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

一、问题描述

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

二、解决

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

const shotVideInputRefs = ref<Record<string, HTMLInputElement>>({});

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

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

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

const triggerShotVideoInput = (rowId) => {if (shotVideInputRefs.value[rowId]) {shotVideInputRefs.value[rowId].click();}};

 

相关文章:

  • 字节跳动开源DeerFlow,解锁AI研究新姿势
  • 采用DHCP动态分配IP地址,如果某主机开机后没有得到DHCP服务器的响应。则该主机获取的IP地址为?
  • 组态王|如何创建组态王工程?
  • 零基础搭建!基于PP-ShiTuV2的轻量级图像识别系统(Docker+API部署指南)
  • printf在c语言中代表什么(非常详细)
  • 6.2.2邻接表法-图的存储
  • PWM讲解+STM32任意频率、占空比、脉宽生成函数介绍
  • boost之signal2
  • 代码上传gitte仓库
  • 本地无损放大软件-realesrgan-gui
  • 人工智能100问☞第26问:什么是贝叶斯网络?
  • Python 条件语句详解
  • Postgres mcp server
  • Text models —— BERT,RoBERTa, BERTweet,LLama
  • java中的Servlet1.x详解
  • Python训练第二十九天
  • DeepSeek系列核心技术与贡献总结
  • PointNet++:点云处理的升级版算法
  • 最长递增子序列
  • C2S-Scale方法解读
  • 水果预包装带来的环境成本谁来分担?
  • 山东发布高温橙警:预计19日至21日局地可达40℃
  • 上市公司重大资产重组新规九要点:引入私募“反向挂钩”,压缩审核流程
  • 一种声音·阿甘本|即将到来的中世纪;“新”与“旧”……
  • 新华时评:让医德医风建设为健康中国护航
  • 国防部:菲方应停止一切侵权挑衅危险举动,否则只会自食苦果