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

【Vue3】标签的 ref 属性

【Vue3】标签的 ref 属性

  • 背景
  • 简介
  • 开发环境
  • 开发步骤及源码

背景

随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋斗的日子。本文内容并非完全原创,大多是参考其他文章资料整理所得,感谢每位技术人的开源精神。

简介

本文介绍 Vue3 中如何使用标签的 ref 属性。

传统开发中通常使用 document.getElementById() 获取标签对应的 DOM 元素,如果页面中多个 DOM 元素使用相同的 ID 进行标识,则使用 document.getElementById() 可能获取非目标 DOM 元素。Vue 提供了标签的 ref 属性解决此问题。

开发环境

分类名称版本
操作系统WindowsWindows 11
IDEVisual Studio Code1.91.1

开发步骤及源码

1> 创建 Vue3 工程,参考:【Vue3】工程创建及目录说明。

2> 删除 src 目录下 assetscomponents 目录。

3> 修改 src 目录下 main.ts

import { createApp } from 'vue'
import App from './App.vue'createApp(App).mount('#app')

4> 自定义功能组件。

<template><div class="demo" ><h1 ref="title">Demo组件</h1><button @click="showTitle">Show Title</button></div>
</template><script setup lang="ts">
import { ref } from 'vue'// 创建一个title用于存储ref标记的内容
const title = ref()function showTitle() {console.log(title.value)
}
</script><style scoped lang="scss">
.demo {background-color: green;margin: 10px 0;padding: 20px;
}
</style>

注意:需要执行 npm install -D sass 命令安装 CSS 预处理器。

5> 修改 Vue 根组件 src/App.vue,引用自定义功能组件。

<template><div class="root"><h1 ref="title">App组件</h1><button @click="showTitle">Show Title</button><Demo ref="demo" /><button @click="showDemo">Show Demo</button></div>
</template><script setup lang="ts">
import Demo from './components/Demo.vue'
import { ref } from 'vue'// 存储ref标记的内容
const title = ref('title')
const demo = ref('demo')function showTitle() {console.log(title.value)
}function showDemo() {console.log(demo)
}
</script><style scoped lang="scss">
.root {background-color: orange;padding: 20px;
}
</style>

由以上代码可以看出,标签的 ref 属性既可以用在普通的 HTML 标签上,也可以用在组件标签上。

6> 执行命令 npm run dev 启动应用,浏览器访问:http://localhost:5173/

  • 点击 App 组件的 Show Title 按钮,显示日志如下:
    在这里插入图片描述

  • 点击自定义组件的 Show Title 按钮,显示日志如下:
    在这里插入图片描述

  • 点击 Show Demo 按钮,显示日志如下:
    在这里插入图片描述

从日志中可以看出:

  • 虽然 App 组件和自定义功能组件都在同一类型标签 <h1> 上使用了相同名称的 ref 属性,但实际获取到的是各自定义的 DOM 节点元素,不会出现冲突;
  • 如果 ref 属性用在普通的 HTML 标签上获取的是对应的 DOM 节点元素,如果用在组件标签上获取的是组件实例对象。

相关文章:

【Vue3】标签的 ref 属性

【Vue3】标签的 ref 属性 背景简介开发环境开发步骤及源码 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗的日子。…...

llama-factory 系列教程 (六),linux shell 脚本自动实现批量大模型的训练、部署与评估

背景 最近在做大模型微调训练的评估&#xff0c;每次都要手动训练大模型&#xff0c;手动评估。 发现这样太浪费时间了&#xff0c;于是就尝试着使用linux shell 脚本&#xff0c;利用 for 循环自动实现大模型的训练、部署与评估。 实验&#xff1a;在不同的文本分类数据集尺…...

python安全脚本编写之流量泛洪

多线程与流量泛洪 并发操作 如果一个单核的cpu&#xff0c;是并不存在严格意义的并发&#xff0c;只是因为处理时间极短&#xff0c;所以感觉上是并发操作的。 针对多核CPU&#xff0c;4核CPU&#xff0c;严格意义上的并发处理是4个 线程和进程 每一个应用程序&#xff0c;至少…...

一文看懂Java反射、注解、UML图和Lambda表达式

反射 定义: 反射是 java 开发语言的特征之一&#xff0c;它允许 java 程序对自身进行检查(自审)&#xff0c;并能直接操作程序内部属性&#xff0c;即就是将类中的各种成分映射成一个 java 对象&#xff0c;利用反射技术可以对一个类进行解剖&#xff0c;将各个组成部分映射成…...

【漏洞复现】搜狗输入法简单绕过Windows锁屏机制

免责申明 本公众号的技术文章仅供参考&#xff0c;此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息…...

JAVA Spring学习Day1

Maven Maven配置&#xff1a; Maven是Java项目的构建工具&#xff0c;使用pom.xml配置文件管理项目依赖、插件和构建目标。Spring Boot项目搭建&#xff1a; Spring Boot是基于Spring框架的快速开发框架&#xff0c;通过约定大于配置的理念简化了Spring应用的搭建和开发。 …...

linux常见面试题(三)

18 什么事SQL注入 由于程序员的水平及经验参差不齐&#xff0c;大部分程序员在编写代码的时候&#xff0c;没有对用户输入数据的合法性进行判断。 ​ 应用程序存在安全隐患。用户可以提交一段数据库查询代码&#xff0c;根据程序返回的结果&#xff0c;获得某些他想得知的数据…...

【JS】ES6新类型Map与Set

一、Map Map 对象保存键值对&#xff0c;并且能够记住键的原始插入顺序。任何值&#xff08;对象或者原始值&#xff09;都可以作为键或值。 描述 Map 对象是键值对的集合。Map 中的一个键只能出现一次&#xff1b;它在 Map 的集合中是独一无二的。 Map 对象按键值对迭代——…...

FETCH FIRST ROW ONLY和 DISTINCT ON和 LIMIT 1的用法

以下是 PostgreSQL 中函数 FETCH FIRST ROW ONLY、DISTINCT ON 和 LIMIT 1 的用法、含义、例子以及适用版本的信息总结&#xff1a; FETCH FIRST ROW ONLY 用法和含义 FETCH FIRST ROW ONLY 用于限制查询结果集&#xff0c;只返回第一行。它可以和 ORDER BY 子句一起使用&am…...

前端小白安装node、vue、Express、Electron及(Electron桌面端exe应用开发)

一、node.js &#xff08;一&#xff09;、下载 下载地址 Node.js — 在任何地方运行 JavaScript (nodejs.org) 参考文章&#xff1a;Node.js安装及环境配置超详细教程【Windows系统】_windows 安装nodejs-CSDN博客 &#xff08;二&#xff09;、安装 安装路径可以更换&a…...

solidity多态【很重要】

多态是面向对象编程&#xff08;OOP&#xff09;的一个核心概念&#xff0c;允许不同类的对象被视为同一类型的实例&#xff0c;并根据实际类型来响应相同的方法调用。 这意味着同一个接口可以用来引用属于不同类的对象&#xff0c;而这些对象可以有自己的方法实现&#xff0c…...

Jangow-1.0.1靶机漏洞复现(未完成)

首先&#xff0c;这个靶机只能使用VirtualBox打开&#xff0c;靶机下载地址为 https://download.vulnhub.com/jangow/jangow-01-1.0.1.ova 虚拟机软件下载地址为 Download_Old_Builds – Oracle VM VirtualBox 开启靶机后访问ip进入如下页面&#xff0c;点击site进入到一个…...

软件测试--python基础

一、python基础 (1)第一个python (2)python解释器 (3)基础语法 ①字面量 什么是字面量 常用的值类型 字符串 ②注释 ③变量 什么是变量 变量的特征 变量的目的是存储运行过程的数据 存储的目的是为了&#xff1a;重复使用 ④数据类型 type()语句 变量有类型吗&#xff1f;…...

GPIO子系统

1. GPIO子系统视频概述 1.1 GPIO子系统的作用 芯片内部有很多引脚&#xff0c;这些引脚可以接到GPIO模块&#xff0c;也可以接到I2C等模块。 通过Pinctrl子系统来选择引脚的功能(mux function)、配置引脚&#xff1a; 当一个引脚被复用为GPIO功能时&#xff0c;我们可以去设…...

学会这个Python库,接口测试so easy

前言 我们在做接口测试时&#xff0c;大多数返回的都是json属性&#xff0c;我们需要通过接口返回的json提取出来对应的值&#xff0c;然后进行做断言或者提取想要的值供下一个接口进行使用。 但是如果返回的json数据嵌套了很多层&#xff0c;通过查找需要的词&#xff0c;就…...

Stable Diffusion4.8.7(Ai绘画)软件安装教程

软件下载 [名称]&#xff1a;Stable Diffusion4.8.7&#xff08;Ai绘画&#xff09; [大小]&#xff1a;16.52GB [语言]&#xff1a;简体中文 [安装环境]&#xff1a;Win11/Win10/Win8/Win7 [硬件要求]&#xff1a;CPU2.0GHz &#xff0c;内存4G&#xff08;或更高&#x…...

操作系统错误处理

错误处理 1、通过函数的返回值表示执行错误&#xff1a; // 返回合法值表示成功 返回非法值表示失败 // 计算大小、查找 long file_size(const char* path) {FILE* fp fopen(path,"r");if(NULL fp)return -1; // 返回非法值fseek(fp,SEEK_END,0);long size …...

【靶场实操】sql-labs通关详解----第一节:基础注入方式(Less-1~Less-10)

目录 一、注入方式简要概括 1.1 SQL常见注入方式 1.2 爆破函数 二、靶场实操 2.1 Less-1 2.1.1 判断类型 2.1.2 联合注入查询 2.2 Less-2 2.2.1 判断类型 2.2.2 注入攻击 2.2.3 字符型与数字型漏洞对比 2.3 Less-3 2.3.1 判断 2.3.2 注入 2.4 Less-4 2.4.1 判断…...

力扣676.实现一个魔法字典

力扣676.实现一个魔法字典 字典树 dfs class Trie{public:Trie* next[26];bool is_end false;};class MagicDictionary {public:Trie* root new Trie();void add(string& word){Trie* p root;for(char c:word){if(p->next[c-a] NULL) p->next[c-a] new Trie…...

ctfshow-web入门-sql注入(web171-web175)

目录 1、web171 2、web172 3、web173 4、web174 5、web175 1、web171 单引号测一下&#xff0c;报错 -- 闭合后回显正常 也可以用 # &#xff0c;不过需要 URL 编码 成功闭合之后&#xff0c;先判断下字段数&#xff1a; 1 order by 3-- 3 的时候正常 4 的时候报错&am…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...