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

【Vue3】深入理解Vue中的ref属性

💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢迎在文章下方留下你的评论和反馈。我期待着与你分享知识、互相学习和建立一个积极的社区。谢谢你的光临,让我们一起踏上这个知识之旅!
请添加图片描述

文章目录

  • 🍋什么是ref?
  • 🍋标签的ref属性
  • 🍋扩展
  • 🍋注意事项
  • 🍋总结

🍋什么是ref?

ref是Vue提供的一个特殊属性,用来在模板或组件中给子元素或组件注册引用信息。这个引用信息可以是一个指向DOM元素或组件实例的引用,通过这个引用,我们可以直接操作对应的DOM元素或组件实例

🍋标签的ref属性

准备好初始代码

<template><div class="person"><h2>馒头</h2><button @click="showLog">输出h2这个元素</button>
</div></template><script lang="ts" setup name="Person11">function showLog(){console.log()}</script><style scoped>.person {background-color: skyblue;box-shadow: 0 0 10px;border-radius: 10px;padding: 20px;}button {margin: 0 5px;}</style>

我们想要输出h2这个元素,应该怎么做,我们可以选择使用JS
在这里插入图片描述
在这里插入图片描述

但是在实际工作中,这样的做法并不可取,原因是怕冲突(不同组件间id相同)
如果我们想解决一下,使用ref

<template><div class="person"><h2 ref="a">馒头</h2>  //替换成ref<button @click="showLog">输出h2这个元素</button>
</div></template><script lang="ts" setup name="Person11">import {ref} from 'vue'let a = ref() //用于存储ref标记的内容function showLog(){console.log(a.value)}</script><style scoped>.person {background-color: skyblue;box-shadow: 0 0 10px;border-radius: 10px;padding: 20px;}button {margin: 0 5px;}</style>

之前我们都是在html中使用ref,那么是否在组件中也同样适用呢

<template><button @click="showLog">输出</button>
<person ref="ren"></person>
</template>
<script lang='ts' setup name="App">import person from './components/person.vue'import {ref} from 'vue'let ren = ref()function showLog(){console.log(ren.value)}
</script>

这样输出的就是组件实例
在这里插入图片描述

🍋扩展

defineExpose是Vue 3中一个用于向父组件公开组件内部方法或属性的函数。在Vue 3中,组件的内部状态和方法默认是私有的,只能在组件内部使用。但是有时候我们希望将一些方法或属性暴露给父组件使用,这时就可以使用defineExpose。


导入方式

import { defineExpose } from 'vue'

注意:需要注意的是,defineExpose只能在script setup中使用,而且需要在script setup中的其他代码之前调用,以确保能正确暴露组件的属性和方法。

🍋注意事项

使用ref需要注意以下几点:

避免在模板中过多使用ref,因为ref会增加组件的耦合度,使得组件难以复用和测试。
如果可能,尽量在mounted生命周期钩子中使用ref,以确保在DOM元素或组件实例完全渲染后再获取引用。
在Vue 3中,使用ref获取组件实例时,需要使用.value来访问实例

总的来说,ref是一个非常有用的特性,可以帮助我们更方便地操作DOM元素或组件实例。但是在使用时,需要谨慎考虑其对组件的影响,避免滥用

🍋总结

总结一下* 用在普通DOM标签上,获取的是DOM节点。用在组件标签上,获取的是组件实例对象。

请添加图片描述

挑战与创造都是很痛苦的,但是很充实。

相关文章:

【Vue3】深入理解Vue中的ref属性

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…...

CentOS上安装与配置Nginx

CentOS上安装与配置Nginx Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件&#xff08;IMAP/POP3&#xff09;代理服务器&#xff0c;并在一个BSD-like协议下发行。以下是在CentOS系统上安装和配置Nginx的步骤。 &#x1f31f; 前言 欢迎来到我的小天地&#xff0c;这…...

DataGrip 连接 Centos MySql失败

首先检查Mysql是否运行&#xff1a; systemctl status mysqld &#xff0c; 如果显示没有启动则需要启动mysql 检查防火墙是否打开&#xff0c;是否打开3306的端口 sudo firewall-cmd --list-all 如果下面3306没有打开则打开3306端口 publictarget: defaulticmp-block-inver…...

【图论】图的遍历 - 构建领接表(无向图)

文章目录 例题&#xff1a;受限条件下可到达节点的数目题目描述代码与注释模板抽象 例题&#xff1a;受限条件下可到达节点的数目 题目链接&#xff1a;2368. 受限条件下可到达节点的数目 题目描述 代码与注释 func reachableNodes(n int, edges [][]int, restricted []int)…...

Claude 3家族惊艳亮相:AI领域掀起新浪潮,GPT-4面临强劲挑战

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法|MySQL| ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-agd7RSCGMblYxo85 {font-family:"trebuchet ms",verdana,arial,sans-serif;f…...

Linux Watchdog 机制是什么

当涉及到Linux操作系统的稳定性和可靠性时&#xff0c;Linux Watchdog机制是一个至关重要的议题。该机制旨在监控系统状态&#xff0c;确保在出现问题时采取适当的措施以维持系统的正常运行。本文将深入探讨Linux Watchdog机制的工作原理、应用范围以及如何配置和使用该机制来提…...

Linux权限问题

1.用户 Linux系统下分为两种用户 a.超级用户&#xff08;root&#xff09; b.普通用户 超级用户的命令提示符是“#”&#xff0c;普通用户的命令提示符是“$” 怎么切换用户呢&#xff1f; 命令 su 用户名 其中切换root可以为su 或者su root-----不用密码 普通用户切换…...

python基础练习题目

1. 根据身高体重&#xff0c;判断人的胖瘦 描述&#xff1a; 通过身高和体重&#xff0c;判断一个人的胖瘦。国际上一般采用BMI体重指数&#xff0c;计算公式为BMI 体重 / 身高2(保留小数点后1位)&#xff0c;参考标准如下&#xff1a;‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪…...

视频编码标准H.264/AVC,H.265/HEVC,VP8/VP9,AV1的基本原理、优缺点以及适用场景

视频编码标准是用于压缩数字视频数据的技术规范&#xff0c;以减少存储和传输所需的带宽。以下是关于H.264/AVC、H.265/HEVC、VP8/VP9和AV1这些标准的基本原理、优缺点以及适用场景的简要描述&#xff1a; H.264/AVC (Advanced Video Coding) 基本原理&#xff1a; H.264是一…...

MATLAB2020a安装编译器mingw-64(6.3.0)

MATLAB2020a指定安装mingw-64&#xff08;6.3.0&#xff09;版本编译器 记录一下几个要点 mingw-64&#xff08;6.3.0&#xff09; 找到对应的mingw-64安装包 设置mingw的bin文件路径到环境变量 变量名&#xff1a;MW_MINGW64_LOC MATLAB设置路径...

Python网络请求高级篇:Requests库的深度运用

在Python网络请求中级篇中&#xff0c;我们了解了如何通过Requests库发送带参数的请求&#xff0c;处理Cookies&#xff0c;使用Session对象&#xff0c;以及设置请求头。在本文中&#xff0c;我们将进一步深入学习Requests库的高级功能&#xff0c;包括处理重定向&#xff0c;…...

AWS认证

AWS新增DEA-C01认证考试知识要点 原创 云计算狂魔 云计算狂魔 2024-03-04 23:58 北京 由于AWS将于3月12日正式启动DEA-C01认证考试&#xff0c;我们整理了相关考试知识要点&#xff0c;请各位考生了解。...

【排序】详解插入排序

一、思想 插入排序是通过构建有序序列&#xff0c;对于未排序数据&#xff0c;在已排序序列中从后向前扫描&#xff0c;找到相应位置并插入。具体步骤如下&#xff0c;将数组下标为0的元素视为已经排序的部分&#xff0c;从1开始遍历数组&#xff0c;在遍历的过程中当前元素从…...

Linux开发板移植rz、sz指令实现串口传输文件

一、开发环境 实现开发板和电脑通过串口来收发互传文件。 开发板&#xff1a;NUC980开发板 环境&#xff1a;Ubuntu 22.04.3 LTS 64-bit lrzsz的源码包:例如 lrzsz-0.12.20.tar.gz&#xff0c;下载地址https://ohse.de/uwe/software/lrzsz.html 二、移植步骤 在开发板上移植…...

Android抓包--不走代理的请求Proxy.NO_PROXY,过代理检测,burpsuite+Postern

网上很多不走代理检测的抓包都是charles + Postern 或 charles + Postern + burpsuite,本文使用burpsuite+Postern。 使用无代理 Proxy.NO_PROXY 访问网络接口原理 在Android开发中,大部分的App的网络请求都是基于charles 和 fiddler 来进行抓包的,对网络客户端使用无代理模…...

SQL教学: MySQL进阶操作详解--探索DML语句的高级用法

欢迎回到我们的SQL-DML语句教学系列。在之前的文章中&#xff0c;我们已经学习了如何使用DDL语句来定义和修改数据库的结构&#xff0c;以及如何使用DML语句进行基本的“增删改查”操作。今天&#xff0c;我们将进一步提升技能&#xff0c;探讨DML语句的高级用法&#xff0c;包…...

JavaScript命名标识符规范,JavaScript的for循环与双重for循环

一个合格的前端需要 戳这里领取完整开源项目&#xff1a;【一线大厂前端面试题解析核心总结学习笔记Web真实项目实战最新讲解视频】 哪些能力&#xff1f; 1、三大基础技能&#xff0c;js、css、html这三项技能是前端工程师能力中的基础&#xff0c;任何框架、工具、库都是基于…...

Qt/自定义控件的封装

新建文件&#xff0c;选择Qt设计师界面类 创建空界面 这是自己控件封装的文件&#xff0c;双击跳转到设计界面进行设计 跳转到其他的ui界面&#xff0c;创建一个widget 右键&#xff0c;选择提升为 在提升的类名称输入刚刚创建的类名&#xff0c;添加后选择提升&#xff0c;勾选…...

【硬件相关】RDMA网络类别及基础介绍

文章目录 一、前言1、RDMA网络协议2、TCP/IP网络协议 二、RDMA类别1、IB2、RoCE3、iWARP 三、RDMA对比1、优缺点说明a、性能b、扩展性c、维护难度 2、总结说明 一、前言 roce-vs-infiniband-vs-tcp-ip RoCE、IB和TCP等网络的基本知识及差异对比 分布式存储常见网络协议有TCP/IP…...

POS 之 ETH质押现状

ETH总质押数量趋势图 质押的ETH总数量&#xff0c;数量越多&#xff0c;网络越安全 ETH质押率 质押的ETH数量占总流通数的比率,对ETH价格有积极的影响 ETH总验证人数 质押的总人数,人数越多,说明社区共识越强,活跃度越高 ETH质押日新增质押 新增质押越多说明人们对ETH价格的很乐…...

GTA5终极防护与增强指南:YimMenu完整使用教程

GTA5终极防护与增强指南&#xff1a;YimMenu完整使用教程 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu …...

Vue-clipboard2 错误处理指南:如何优雅处理复制失败情况

Vue-clipboard2 错误处理指南&#xff1a;如何优雅处理复制失败情况 【免费下载链接】vue-clipboard2 A simple vue2 binding to clipboard.js 项目地址: https://gitcode.com/gh_mirrors/vu/vue-clipboard2 Vue-clipboard2 是一款简单的 Vue2 绑定 clipboard.js 的插件…...

Tunasync镜像同步工具:清华大学TUNA团队的高效解决方案

Tunasync镜像同步工具&#xff1a;清华大学TUNA团队的高效解决方案 【免费下载链接】tunasync Mirror job management tool. 项目地址: https://gitcode.com/gh_mirrors/tu/tunasync Tunasync是清华大学TUNA团队开发的一款专业镜像同步管理工具&#xff0c;为开源社区提…...

序列近似整数规划导向的通用高性能离散变量拓扑优化新方法【附算法】

✨ 长期致力于拓扑优化、整数规划、序列近似规划、信赖域、拓扑不变量研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;正则松弛算法求解大规模可分离整…...

合同系统业务功能

合同管理系统的核心是实现合同全生命周期管控&#xff0c;其生命周期主要分为五大环节&#xff1a;签订前管理、审批流程管理审批管理、合同签订、合同信息与文本管理、合同履约执行。 不同环节对应不同的功能需求&#xff0c;需结合企业业务特点灵活适配&#xff0c;以下是各环…...

【Perplexity阅读推荐查询实战指南】:20年AI工具专家亲授5大精准筛选技巧,错过再等一年

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;Perplexity阅读推荐查询的核心价值与适用场景 Perplexity 作为一款基于大语言模型的实时问答与研究工具&#xff0c;其“阅读推荐查询”能力并非简单的内容聚合&#xff0c;而是融合语义理解、来源可信度评估…...

谷歌开发者大会2026:Gemini全面升级,重塑搜索与生活体验!

谷歌开发者大会2026开幕在品尝过「会前甜点」Android Show 之后&#xff0c;真正的重头戏谷歌开发者大会 Google I/O 2026 正式揭开了帷幕。不出所料&#xff0c;在时长接近两个小时的活动中&#xff0c;Gemini 占据了绝对的 C 位。除了更新基础模型和周边能力之外&#xff0c;…...

8351健康管理中心用黑科技设备为企业家筑起生命防线

事业的成功固然值得骄傲&#xff0c;但如果没有健康作为根基&#xff0c;一切的辉煌都显得摇摇欲坠。对于每天在高压下决策、在商海中搏击的企业家而言&#xff0c;健康早已不是一句简单的口号&#xff0c;而是一场需要长期投入的战略投资。然而现实往往是&#xff0c;很多企业…...

嵌入式MCU流数据统计:Welford在线算法与定点数优化实践

1. 项目概述与核心挑战在嵌入式开发领域&#xff0c;尤其是面对那些主频几十兆赫兹、内存仅以KB计的低算力MCU时&#xff0c;我们常常需要处理来自传感器的连续数据流。计算这些数据的均值和方差&#xff0c;听起来像是统计学入门课的第一章&#xff0c;简单到让人几乎要忽略其…...

ETT数据集实战:如何用油温预测优化电网负载与设备维护策略

ETT数据集实战&#xff1a;如何用油温预测优化电网负载与设备维护策略 当一座城市的电网在盛夏午后突然崩溃&#xff0c;背后往往隐藏着变压器油温失控的连锁反应。去年某沿海城市电网的故障分析报告显示&#xff0c;超过60%的突发停电事件与变压器过热直接相关——这个数据让行…...