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

【Vue】Vue3.0(十三)中标签属性ref(加在普通标签上、加在组件标签上)、局部样式

上篇文章: 【Vue】Vue3.0 (十二)、watchEffect 和watch的区别及使用

🏡作者主页:点击!

🤖Vue专栏:点击!

⏰️创作时间:2024年10月18日20点56分

文章目录

      • 基本用法
      • 访问DOM元素
      • 访问子组件实例
      • 注意事项
      • 举个栗子~
      • 补充知识:**局部样式:**

标签属性ref(加在普通标签上、加在组件标签上)有什么区别

在Vue 3.0中,ref是一个用于创建响应式数据的函数,它可以用来在组件中引用DOM元素或子组件实例。以下是关于ref的详细介绍:

作用:用于注册模板引用。

  • 用在普通DOM标签上,获取的是DOM节点。

  • 用在组件标签上,获取的是组件实例对象。

基本用法

  • 在Vue 3.0中,使用ref函数来创建一个响应式的引用。例如:
<template><div ref="myDiv">这是一个 div 元素</div>
</template><script setup>
import { ref } from 'vue';const myDiv = ref();
</script>

在上述代码中,使用ref函数创建了一个名为myDiv的响应式引用,并将其初始值设置为null。在模板中,通过ref指令将myDiv引用与div元素绑定。这样,在组件挂载后,myDiv的值将指向该div元素的实例。

访问DOM元素

  • 可以通过ref引用访问DOM元素的属性和方法。例如:
<template><div ref="myDiv">这是一个 div 元素</div><button @click="changeText">改变文本</button>
</template><script setup>
import { ref } from 'vue';const myDiv = ref();const changeText = () => {myDiv.value.textContent = '这是改变后的文本';
};
</script>

在上述代码中,定义了一个名为changeText的方法,在该方法中,通过myDiv.value访问div元素的textContent属性,并将其值修改为'这是改变后的文本'。当点击按钮时,div元素的文本内容将被改变。

访问子组件实例

  • ref还可以用于访问子组件实例,以便在父组件中调用子组件的方法或访问子组件的数据。例如:
// 子组件
<template><div><p>{{ message }}</p></div>
</template><script setup>
import { ref } from 'vue';const message = ref('这是子组件的消息');const changeMessage = () => {message.value = '这是改变后的消息';
};defineExpose({changeMessage,
});
</script>// 父组件
<template><div><ChildComponent ref="child" /><button @click="callChildMethod">调用子组件方法</button></div>
</template><script setup>
import { ref } from 'vue';
import ChildComponent from './ChildComponent.vue';const child = ref(null);const callChildMethod = () => {child.value.changeMessage();
};
</script>

在上述代码中,在子组件中定义了一个名为message的响应式数据,并定义了一个名为changeMessage的方法,用于改变message的值。通过defineExpose函数将changeMessage方法暴露给父组件。在父组件中,使用ref引用获取子组件实例,并在callChildMethod方法中调用子组件的changeMessage方法。

注意事项

  • ref的值是一个响应式对象,需要通过.value来访问其实际的值。
  • 在模板中使用ref时,需要确保ref引用的元素或组件已经挂载,否则ref的值将为null
  • ref引用在组件的整个生命周期内都是有效的,可以在组件的任何方法中使用。
  • 当使用ref引用一个组件时,需要确保该组件已经被正确注册。

ref是Vue 3.0中一个非常有用的特性,它使得在组件中访问DOM元素和子组件实例变得更加方便和灵活。通过ref,可以轻松地实现对DOM元素的操作和对子组件的交互,从而增强了组件的复用性和可维护性。

举个栗子~

在这里插入图片描述

App.vue:


<template><h4 class="person" ref="title2">app的H3标签</h4><button @click="showTel">点我输出app的h3</button><button @click="showRen">点我输出Person标签</button><Person ref="ren"/></template><script lang="ts" setup name="App"> //当前根组件的组件名
import Person from './components/Person.vue'  
import {ref} from 'vue'let title2 =ref();
let ren =ref();
function showTel(){
console.log(title2.value);
}function showRen(){console.log(ren.value);console.log(ren.value.b);
}</script><style >
.app {
background-color: #ddd;
box-shadow: 0 0 10px;
border-radius: 10px;
padding: 20px;
}
</style>

Person.vue

<template><div class="person"><h4 ref="title2">北京</h4><h4>尚硅谷</h4><button @click="showH3">点我展示H3标签</button></div>
</template><script lang="ts" setup name="Person">import {  ref, watch,defineExpose } from 'vue'
//数据
let title2 =ref();
let a =ref(0);
let b =ref(1);
let c =ref(2);function showH3(){console.log(title2.value);
}//定义要让父对象能看到的东西 ,注意这个里面要传入一个对象,对象中可以放键值对,这些键值对就是可以让父亲看到的属性
defineExpose({a:a,b:b,c:c});</script><style scoped>
.person {background-color: skyblue;box-shadow: 0 0 10px;border-radius: 10px;padding: 20px;
}li {font: 1em sans-serif;
}
</style>

结果1:
验证1:对于ref标记不会像id属性那样,多个组件之间会互相影响;ref标记及时一样,在一起使用的组件中,那也不会影响,是相互隔离的;
我点击了分别点击了app 和Person中的按钮,分别进行了输出,没有影响
在这里插入图片描述
验证2:app中能访问Person中暴露的方法和属性,这样在实际开发中,可以父组件去使用子组件的属性或者方法;
在这里插入图片描述

补充知识:局部样式:

一般写样式的时候,会加上scoped属性,这样就保证了这个选择器写的样式只在当前vue中生效,避免了影响其他的组件中同样选择器样式的展示
在这里插入图片描述

相关文章:

【Vue】Vue3.0(十三)中标签属性ref(加在普通标签上、加在组件标签上)、局部样式

上篇文章&#xff1a; 【Vue】Vue3.0 &#xff08;十二&#xff09;、watchEffect 和watch的区别及使用 &#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;Vue专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年10月18日20点56分 文章目录 基本…...

Linux系统基础-文件系统

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 Linux系统基础-文件系统 收录于专栏[Linux学习] 本专栏旨在分享学习Linux的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 1. 回顾C语言…...

机器学习和深度学习常用的工具库

一、机器学习常用库 1. Scikit-learn 简介&#xff1a;一个基于Python的机器学习库&#xff0c;专注于经典的机器学习算法。特点&#xff1a; 提供了多种分类、回归、聚类和降维算法。具有统一的API&#xff0c;便于使用。集成了数据预处理、模型选择和评估等功能。 应用&…...

【unity小技巧】Unity6 LTS版本安装和一些修改和新功能使用介绍

文章目录 前言安装新功能变化1、官方推荐使用inputsystem进行输入控制2、修复了InputSystem命名错误导致listen被遮挡的bug3、自带去除unity启动画面logo功能4、unity官方的behavior行为树插件5、linearVelocity代替过时的velocity方法待续 完结 前言 2024/10/17其实unity就已…...

5种边界填充

目录 边界填充需要知道的两个东西什么算边界边界的范围是多少举例 复制填充反射法反射101法外包装法数值填充法原图代码最终效果 边界填充需要知道的两个东西 什么算边界 顾名思义&#xff1a;就是图片的最外边 边界的范围是多少 根据你自己的需要而设置 举例 这里我选择…...

鸿蒙网络编程系列7-TLS安全数据传输单向认证示例

1.TLS简介 TLS&#xff08;Transport Layer Security&#xff09;协议的前身是SSL&#xff08;Secure Socket Layer&#xff09;安全套接层协议&#xff0c;由Netscape公司于1994年提出&#xff0c;是一套网络通信安全协议。IETF&#xff08;The Internet Engineering Task Fo…...

LangGraph 源码分析 | BaseTool 模板类

文章目录 BaseTool 源码分析核心属性以 TavilySearchResults(BaseTool) 为例namedescriptionargs_schemaresponse_format查询选项属性 需要子类实现的抽象方法以 TavilySearchResults(BaseTool) 为例 核心方法arun()&#xff1a;run()的异步执行版本invoke()和ainvoke() BaseTo…...

vulnhub靶场之JOY

一.环境搭建 1.靶场描述 Does penetration testing spark joy? If it does, this machine is for you. This machine is full of services, full of fun, but how many ways are there to align the stars? Perhaps, just like the child in all of us, we may find joy in …...

intel和AMD突然联姻,这操作给我看傻了

要说现在的显卡一哥&#xff0c;那肯定非 NVIDIA 莫属&#xff0c;不仅仅是在 AI 领域是赚的盆满钵满&#xff0c;更是在游戏显卡领域把红蓝两家打的节节败退。 在 6000 系列尚能与之一战的 AMD 也认清了现实&#xff0c;在最近宣布了下一代 8000 系列显卡放弃高端显卡战争&…...

yolo_face_pose-DataBall 人脸关键点数据集 >> DataBall

数据集下载地址&#xff1a;ultralyticsyolo训练自定义人脸关键点训练和验证数据集资源-CSDN文库 数据集定义&#xff1a; ultralytics yolo 训练自定义人脸关键点训练和验证数据集 数据集格式&#xff1a;yolo 训练集数量&#xff1a;3295 验证集数量&#xff1a;120 类别&a…...

Unity 山水树木

本章节内容 1. Unity对3D游戏物体的简单操作&#xff1b; 2. 构建山水树木的场景 1. Unity 简易操作 1.1 新建3D游戏场景 1. 打开Unity Hub&#xff0c;点击 New Project &#xff08;新建项目&#xff09;按键&#xff0c;选择第二项 3D(Built-In Render Pipeline)&#xf…...

Redis 性能优化选择:Pika 的配置与使用详解

引言 在我们日常开发中 redis是我们开发业务场景中不可缺少的部分。Redis 凭借其内存存储和快速响应的特点&#xff0c;广泛应用于缓存、消息队列等各种业务场景。然而&#xff0c;随着数据量的不断增长&#xff0c;单节点的 Redis 因为内存限制和并发能力的局限&#xff0c;逐…...

【某农业大学计算机网络实验报告】实验三 IP数据报发送和转发流程

实验目的&#xff1a; &#xff08;1&#xff09;掌握基本的网络配置方法。 &#xff08;2&#xff09;观察 IP 数据报的发送和转发流程&#xff0c;掌握 IP 转发分组的原理。 实验器材&#xff1a; 一台Windows操作系统的PC机。 实验准备&#xff1a; 1&#xff0e;配置…...

Android13 添加运行时权限

在一些场景下&#xff0c;需要给app 添加运行时权限&#xff0c;这样就不需要在使用的时候再去点击授权。 直接上代码&#xff1a; --- a/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.javab/services/core/java/com/android/server/pm…...

官方操刀占用仅6G,Win 11 LTSC详细安装、优化教程来了

前段时间微软发布 Win 11 年度重磅更新 24H2&#xff0c;顺便也带来了备受期待的 Win 11 2024 官方精简 LTSC&#xff08;老坛酸菜&#xff09;版。 Win 11 重磅更新发布&#xff0c;老坛酸菜版成了配角&#xff01; 简单来说&#xff0c;Win 11 LTSC 是微软针对企业用户推出…...

【论文精读】RELIEF: Reinforcement Learning Empowered Graph Feature Prompt Tuning

RELIEF: Reinforcement Learning Empowered Graph Feature Prompt Tuning 前言AbstractMotivationSolutionRELIEFIncorporating Feature Prompts as MDPAction SpaceState TransitionReward Function Policy Network ArchitectureDiscrete ActorContinuous ActorCritic Overall…...

2023-06 GESP C++三级试卷

2023-06 GESP C三级试卷 &#xff08;满分&#xff1a;100 分 考试时间&#xff1a;90 分钟&#xff09; PDF试卷及答案回复:GESPC2023063 一、单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09; 1 高级语言编写的程序需要经过以下&#xff08; &#xff09;操…...

Maven--简略

简介 Apache旗下的一款开源项目&#xff0c;用来进行项目构建&#xff0c;帮助开发者管理项目中的jar及jar包之间的依赖&#xff0c;还拥有项目编译、测试、打包的功能。 管理方式 统一建立一个jar仓库&#xff0c;把jar上传至统一的仓库&#xff0c;使用时&#xff0c;配置…...

leetcode 刷题day44动态规划Part13( 647. 回文子串、516.最长回文子序列)

647. 回文子串 动规五部曲&#xff1a; 1、确定dp数组&#xff08;dp table&#xff09;以及下标的含义 按照之前做题的惯性&#xff0c;定义dp数组的时候很自然就会想题目求什么&#xff0c;就如何定义dp数组。但是对于本题来说&#xff0c;这样定义很难得到递推关系&#x…...

华为OD机试真题---关联子串

华为OD机试中的“关联子串”题目是一个考察字符串处理和算法理解的经典问题。以下是对该题目的详细解析&#xff1a; 一、题目描述 给定两个字符串str1 和 str2&#xff0c;如果字符串 str1 中的字符&#xff0c; 经过排列组合后的字符串中只要有一个是 str2 的子串&#xff…...

iGnav RTK/INS紧组合:从算法理论到代码实现的深度解析

1. RTK/INS紧组合技术概述 RTK&#xff08;实时动态定位&#xff09;和INS&#xff08;惯性导航系统&#xff09;的紧组合技术是当前高精度导航定位领域的重要发展方向。简单来说&#xff0c;RTK通过接收卫星信号实现厘米级定位&#xff0c;但在信号遮挡环境下性能下降&#xf…...

STM32 HAL库实战:用CD74HC4067扩展模拟输入通道,附完整工程代码

STM32 HAL库实战&#xff1a;用CD74HC4067扩展模拟输入通道&#xff0c;附完整工程代码 在嵌入式开发中&#xff0c;模拟信号采集是常见需求&#xff0c;但MCU内置ADC通道数量往往有限。当面对多路传感器信号采集时&#xff0c;如何经济高效地扩展输入通道成为开发者必须解决的…...

【.NET新特性·第1篇】.NET 8:统一平台的成熟之作

三年磨一剑&#xff0c;.NET 8 是微软统一平台战略的首个 LTS 里程碑版本 版本定位 适用版本&#xff1a;.NET 8 | LTS&#xff08;长期支持&#xff09; 支持周期&#xff1a;3 年&#xff08;2023.11 - 2026.11&#xff09; 前置知识&#xff1a;.NET 6/7 或其他版本的 C# 开…...

Windows热键冲突智能解析:Hotkey Detective终极解决方案

Windows热键冲突智能解析&#xff1a;Hotkey Detective终极解决方案 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 在Wind…...

OpenClaw小龙虾设置DeepSeek模型|自检清单+常见问题解决方案

OpenClaw 连接 DeepSeek 完整图文教程 前置准备 下载小龙虾一键安装包&#xff08;下载地址&#xff1a;www.totom.top&#xff09;并安装。 已安装并可以正常打开 OpenClaw Windows。 OpenClaw 顶部 Gateway 状态保持在线。 电脑已联网&#xff0c;可正常访问 DeepSeek 开…...

法律检索效率暴跌83%?Perplexity法律文献搜索的3大隐藏功能,律所内部培训刚流出

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;法律检索效率暴跌83%&#xff1f;Perplexity法律文献搜索的3大隐藏功能&#xff0c;律所内部培训刚流出 当某红圈所合伙人发现团队平均单案法律检索耗时从2.1小时飙升至11.4小时&#xff0c;真相竟是——传统关…...

Git忽略文件失效?一招解决!

场景&#xff1a; 在某次 Git 提交时&#xff0c;忘记在 .gitignore 文件中添加上某个原本应该被忽略的文件夹或者文件&#xff0c;于是后一次的提交时在 .gitignore 加上了这些文件&#xff0c;但是在远程的仓库中这些文件夹、文件却并没有消失。这个属于属于什么问题&#xf…...

减肥成功的人,都有这 4 个共同点

减肥成功的人&#xff0c;都有这 4 个共同点 为什么你总是减肥失败&#xff0c;而有的人却轻松瘦下来不反弹&#xff1f; 今天告诉你真相 &#x1f447; 01&#xff5c; 吃够基础代谢值 ❌ 极端节食 → 代谢下降 → 越减越肥 ✅ 男生 ≥1400 大卡&#xff0c;女生 ≥1100 大卡 …...

【免费下载】 新概念英语第三册资源集合

新概念英语第三册资源集合 【下载地址】新概念英语第三册资源集合 新概念英语第三册资源集合 项目地址: https://gitcode.com/open-source-toolkit/8a5ad 资源介绍 本仓库提供了一系列新概念英语第三册&#xff08;New Concept English 3&#xff09;的资源文件&#x…...

Mac视频预览终极指南:QuickLookVideo让你的Finder焕然一新

Mac视频预览终极指南&#xff1a;QuickLookVideo让你的Finder焕然一新 【免费下载链接】QuickLookVideo This package allows macOS Finder to display thumbnails, static QuickLook previews, cover art and metadata for most types of video files. 项目地址: https://gi…...