Skip to content

v-for中使用ref获取dom

约 198 字小于 1 分钟

vue前端问题

2025-07-15

在v-for中不能直接使用ref获取dom,因为v-for会生成许多同样ref命名的dom有多义性

  1. 数组存储 refs是一个数组,并且打印后会发现这个数据里的 item 是没有属性可以去区分这个 ref 是哪一个具体的dom
<script setup>
	let refs = []
	const setRef = (el) => {
		if (el) {
			refs.push(el);
		}
	}
<scrippt>

<template>
	<div v-for="item in list" :ref="setRef"></div>
</template>
  1. 对象存储 将dom以对象键值对的形式存储
<script setup>
	let refs: { [key: string]: typeof Son } = {};
	const setRef = (key: string, el: typeof Son) => {
		if (el) {
			refs[key] = el;
		}
	};
<scrippt>

<template>
	<div v-for="item in list" :ref="(el) => setRef(item, el)"></div>
</template>

这样取值的话就可以使用refs[item]取值了

贡献者

pinkdopeybug

公告

本博客内容原本使用obsidian编写,由于没有仔细配置,以至图片引用使用obsidian风格。

且图片存储路径频繁变更导致部分文章图片无法正常显示。

为您带来不便请谅解。

ps:贡献者一直都只有PinkDopeyBug一人,显示Pink的贡献者是因为我没好好配置git。后面因为懒就没一个个修改。如果被提及的人不希望被显示可以联系我我会立即删除。