Vue ref 变量怎么结合 DOM 元素引用实现组件挂载后的节点操作

大瑶吖_1028

大瑶吖_1028

2026-08-08

985人浏览

原创

vue 中 ref 绑定 dom 需遵循「声明→绑定→访问」三步闭环,必须在 onmounted 中操作;ref 初始化为 null,模板中用同名变量绑定;typescript 项目需标注具体 dom 类型以保障类型安全。

vue ref 变量怎么结合 dom 元素引用实现组件挂载后的节点操作

Vue 中的 ref 变量结合 DOM 元素引用,核心在于「声明 → 绑定 → 访问」三步闭环,且必须等组件真实挂载后才能安全操作节点。关键不是“能不能”,而是“什么时候、怎么用才不出错”。

ref 绑定 DOM 的标准写法

在 `<script setup>` 中用 <strong>ref(null) 初始化,模板中用同名变量绑定到目标元素:</script>

  • 创建 ref:const inputRef = ref(null) —— 初始值必须为 null(否则类型或逻辑易出错)
  • 模板绑定:<input ref="inputRef"> —— 不加冒号,直接传变量名(字符串 ref 已不推荐)
  • 注意:ref 名必须与脚本中定义的变量名完全一致,大小写敏感

必须在 onMounted 中访问 DOM

因为 DOM 节点在组件渲染完成前不存在,ref.value 在 setup 同步执行时仍为 null。只有在生命周期钩子中才能确保节点就位:

check-vue-style
check-vue-style

检查 .vue 单文件组件的 CSS 规范问题并给出提示,适用于样式检查、CSS审查和 Vue 页面质量巡检。

下载
  • 使用 onMounted(() => { ... }) 是最稳妥的选择
  • 不要在 setup 顶层直接读取 inputRef.value,会得到 null
  • 若需后续响应式触发操作(如点击后聚焦),可随时通过 inputRef.value 调用原生方法,例如 inputRef.value.focus()

类型安全建议(尤其 TypeScript 项目)

避免运行时报错,明确指定 DOM 类型能提前拦截错误:

  • 输入框:const inputRef = ref<htmlinputelement null>(null)</htmlinputelement>
  • 按钮:const btnRef = ref<htmlbuttonelement null>(null)</htmlbuttonelement>
  • 通用容器:const divRef = ref<htmldivelement null>(null)</htmldivelement>
  • 类型标注后,.value 的属性和方法会有完整提示,比如 inputRef.value?.select() 不会报错

v-for 多个元素的 ref 处理

当需要批量操作列表项时,ref 会自动收集为数组,但需主动初始化为数组类型:

  • 声明:const itemRefs = ref<htmldivelement>([])</htmldivelement>
  • 模板:<div v-for="item in list" :key="item.id" ref="itemRefs">{{ item.name }}</div>
  • 挂载后:itemRefs.value[0]?.scrollIntoView() 或遍历操作
  • 注意:不能用字符串 ref(如 ref="item"),否则只会覆盖,得不到数组
不复杂但容易忽略

前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2223

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

4783

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

5910

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

5358

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

763

5

DOM是什么意思
DOM是什么意思

dom的英文全称是documentobjectmodel,表示文件对象模型,是w3c组织推荐的处理可扩展置标语言的标准编程接口;dom是html文档的内存中对象表示,它提供了使用javascript与网页交互的方式。想了解更多的相关内容,可以阅读本专题下面的文章。

2024.08.14

6481

7

vue2.0和3.0区别
vue2.0和3.0区别

vue2.0和3.0区别:vue2的响应式原理是利⽤“Object.defineProperty()”对数据进⾏劫持结合发布订阅模式的⽅式来实现,vue3中使⽤了es6的proxy API对数据代理,实现对数据的监控。本专题为大家提供vue2.0和3.0区别的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.17

1634

5

vue3的生命周期有哪些
vue3的生命周期有哪些

vue3的生命周期:1、beforecreate;2、created;3、beforemount;4、mounted;5、beforeupdate;6、updated;7、beforedestroy;8、destroyed;9、activated;10、deactivated等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

11802

5

Vue3组合式API与组件开发实战
Vue3组合式API与组件开发实战

本专题讲解 Vue 3 组合式 API 的核心概念与应用技巧,深入分析响应式系统、生命周期管理、组件设计与复用策略。通过完整项目案例,指导前端开发者实现高性能、结构清晰的 Vue 应用,提升开发效率与代码可维护性。

2026.02.10

296

23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Vue 教程
Vue 教程

共42课时 | 16.9万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1.4万人学习

Vue.js 微实战--十天技能课堂
Vue.js 微实战--十天技能课堂

共18课时 | 1.7万人学习