【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中生效,避免了影响其他的组件中同样选择器样式的展示
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/896109.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

主键 外键

主键 外键 在关系型数据库中&#xff0c;主键&#xff08;Primary Key&#xff09;和外键&#xff08;Foreign Key&#xff09;是用于维护数据完整性和建立表之间关系的重要概念。 主键&#xff08;Primary Key&#xff09; 定义: 主键是一个或多个列的组合&#xff0c;其值能…

初始Python篇(4)—— 元组、字典

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a; Python 目录 元组 相关概念 元组的创建与删除 元组的遍历 元组生成式 字典 相关概念 字典的创建与删除 字典的遍历与访问 字典…

Maple :一款强大的计算软件,广泛应用于数学、工程、物理和其他科学领域

Maple 是一款强大的计算软件&#xff0c;广泛应用于数学、工程、物理和其他科学领域。它以其符号计算、数值计算和图形可视化能力而闻名&#xff0c;适用于从基础到高级的数学问题。以下是对 Maple 的详细介绍&#xff1a; 1. 基本功能 符号计算 &#xff1a;Maple 能够处理复…

RBAC 模型

系统权限控制最常采用的访问控制模型就是 RBAC 模型 。 什么是 RBAC 呢&#xff1f; RBAC 即基于角色的权限访问控制&#xff08;Role-Based Access Control&#xff09;。这是一种通过角色关联权限&#xff0c;角色同时又关联用户的授权的方式。 简单地说&#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…

ORACLE 19C安装 RAC报错

1. 问题描述 在Oracle 19C RAC的安装过程中&#xff0c;使用克隆方式在两个节点上部署集群。当第一个节点配置好基础服务后&#xff0c;关机并克隆节点。当尝试在第二个节点上通过页面进行RAC安装时&#xff0c;出现以下错误&#xff1a; [INS-32070] Could not remove the n…

Maven--简略

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

ArcGIS无插件加载(无偏移)在线天地图高清影像与街道地图指南

在地理信息系统&#xff08;GIS&#xff09;的应用中&#xff0c;加载高清影像与街道地图对于地图制图、影像查阅、空间数据分析等工作至关重要。天地图作为官方出品的地图服务&#xff0c;以其标准的数据、较快的影像更新速度等特点受到广泛欢迎。以下是如何在ArcGIS中无插件加…

【论文速读】Prompt Tuning:The Power of Scale for Parameter-Effificient Prompt Tuning

arxiv&#xff1a;2104.08691v2 摘要 在这项工作中&#xff0c;我们探索了“prompt tuning&#xff08;提示调优&#xff09;”&#xff0c;这是一种简单而有效的机制&#xff0c;用于学习“soft prompts&#xff08;软提示&#xff09;”&#xff0c;以条件下冻结的语言模型…

MATLAB智能算法 - AntColonyOptimization蚁群算法

AntColonyOptimization蚁群算法 智能算法是路线规划、深度学习等等一系列领域所使用的优化算法&#xff0c;是算法进阶之路的必备之路。 前言&#xff1a;本文主要围绕解决TSP旅行商问题展开&#xff0c;对于机器人的路线规划以及非线性方程求解的问题等解决方案 对于一些其他优…

leetcode289:生命游戏

根据 百度百科 &#xff0c; 生命游戏 &#xff0c;简称为 生命 &#xff0c;是英国数学家约翰何顿康威在 1970 年发明的细胞自动机。 给定一个包含 m n 个格子的面板&#xff0c;每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态&#xff1a; 1 即为 活细胞 &am…

Nest.js 实战 (十四):如何获取客户端真实 IP

问题解析 在 Nest.js 应用中&#xff0c;当你试图通过 request.ip 获取客户端的 IP 地址时&#xff0c;如果总是返回 ::1 或者 ::ffff:127.0.0.1&#xff0c;这通常意味着请求来自本地主机。 因为在前后端分离应用中&#xff0c;前端请求后端服务一般的做法都是通过代理&…

springboot051医院管理系统(论文+源码)_kaic

医院管理系统 摘要 随着信息互联网信息的飞速发展&#xff0c;医院也在创建着属于自己的管理系统。本文介绍了医院管理系统的开发全过程。通过分析企业对于医院管理系统的需求&#xff0c;创建了一个计算机管理医院管理系统的方案。文章介绍了医院管理系统的系统分析部分&#…

R语言机器学习遥感数据处理与模型空间预测技术及实际项目案例分析

随机森林作为一种集成学习方法&#xff0c;在处理复杂数据分析任务中特别是遥感数据分析中表现出色。通过构建大量的决策树并引入随机性&#xff0c;随机森林在降低模型方差和过拟合风险方面具有显著优势。在训练过程中&#xff0c;使用Bootstrap抽样生成不同的训练集&#xff…

2024大模型应用实践报告|附35页PDF文件下载

前言 今天分享的是大模型专题系列深度研究报告&#xff1a;《大模型专题&#xff1a;2024大模型应用实践报告&#xff1a;战略一致性&#xff0c;企业成功落地大模型的隐藏秘钥》 &#xff08;报告出品方&#xff1a;爱分析&#xff09; 报告共计&#xff1a;35页 1.报告综述…

某MDM主数据管理系统与微软Dynamic CRM系统(国内节点)集成案例

一、需求分析 需要完成的核心场景&#xff1a; 客户主数据&#xff1a;通过SAP PO集成中间件平台&#xff0c;某MDM主数据实时推送客户主数据信息至微软CRM系统&#xff0c;方便微软CRM系统进行客户方面的管理&#xff0c;并供微软CRM查询员工信息&#xff0c;修改员工&…

大数据-180 Elasticsearch - 原理剖析 索引写入与近实时搜索

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

【Eclipse系列】解决Eclipse中xxx.properties文件中文乱码问题

问题描述&#xff1a;由于eclipse对Properties资源文件的编码的默认设置是ISO-8859-1&#xff0c;所以在打开.properties文件时&#xff0c;会发现中文乱码了&#xff0c;如图&#xff1a; 解决方法&#xff1a; 1、一次生效法 右击该properties文件–>properties–>Re…

暖水毯/取暖毯语音识别控制芯片IC方案

暖水毯、取暖毯作为现代家居生活的温暖伴侣&#xff0c;其智能化升级已是大势所趋。在暖水毯与取暖毯中融入语音识别控制芯片IC方案&#xff0c;为用户的冬日取暖体验带来了革命性的变革。 一、暖水毯/取暖毯增加语音识别控制芯片方案&#xff0c;让产品能通过对话来调节&…