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

vue3 的组件通信以及ref的使用&v-model vue3 组件通信以及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 中 ref 获取组件实例的用法 1、在元素上添加 ref 属性 2、创建组件实例对象 3、在函数中使用 阅读详情

相关推荐

Vue的ref属性

【代码】Vue的ref属性。

LuckyStar的博客 314

Vue3中 ref 属性详解

总结:在 Vue3 中没有 $refs,因此 Vue3 中通过 ref 属性获取元素就不能按照 vue2 的方式来获取。Vue3 需要借助生命周期方法,因为在 setup 执行时,template 中的元素还没挂载到页面上,所以必须在 mounted 之后才能获取到元素。 总结: 先申明 ref 响应式数据,再返回给模版使用,模板中通过 ref 绑定数据; 总结: 先定义一个空数组,再定义一个函数获取元素,并把该函数绑定到 ref 上(必须动态绑定),最后在函数中可以通过参数得到单个元素,这个元素一般可以放

明天也要努力的博客 4万+

【Vue3的组合式API】超详细教程,含computed、watch、组件通信、模版引用......

哈喽,大家好,我是码喽的自我修养!今天给大家分享【Vue3的组合式API】超详细教程,包含setup语法糖、computed、watch、组件通信、模版引用、vue3新特性等等......,并提供具体代码帮助大家深入理解,彻底掌握!

共同学习,共同成长 2356

Vue3实战笔记(44)—vue3组件的ref属性

之前学习过ref声明响应式对象,前几天读代码遇到了发懵的地方,详细学习了一下才发现,用法还有很多,遂总结一下ref的用法备忘。Vue3 中的 ref 是一种创建响应式引用的方式,它在Vue生态系统中扮演着重要角色。以下是Vue3中ref属性及其相关API的几个关键点:创建响应式变量:使用 ref 函数可以创建一个响应式的数据引用,返回的对象包含 .value 属性,该属性既可以读取也可以写入,并且是响应式的。Javascript2// 创建一个响应式引用,初始值为0// 输出0。

山花的博客 3911

Adversarial Texture for Fooling Person Detectors in the Physical World

本文提出了对抗纹理的想法(AdvTexture),与基本补丁攻击不同对抗纹理可以生成任意大小,可以覆盖任意大小的不了,并且纹理的任何局部都有对抗性的效果。当衣服被对抗纹理覆盖是,摄像头捕捉到的每一个局部区域都可以攻击探测器,这成功解决了片段缺失的问题。提出了一种两阶段生成方法:基于环形收割的可扩展生成攻击(TC-EGA)来制作广告纹理。第一阶段,训练一个全卷积网络FCN作为生成器,通过采样随机潜变量作为输入来产生纹理(不同于GAN中传统的生成器架构,每一层都使用卷积运算)......

weixin_49171105的博客 1067

overleaf导入模板

本文介绍了如何在Overleaf平台导入Springer Nature模板。首先下载所需的模板压缩包,然后在Overleaf中选择"Upload project"上传该压缩包。上传后会显示模板文件,包括EPS格式图像文件、LaTeX源文件、BibTeX参考文献文件、PDF输出文件以及文档类文件。这些文件共同构成了完整的LaTeX模板,可用于学术论文写作和排版。

A2787960542的博客 1148

vue3中的计算属性

使用getter函数,返回值是一个不变的响应式ref对象 <template> <div> 姓:<input type="text" v-model="firstName"/> 名:<input type="text" v-model="lastName"/> 姓名:<input type="text" v-model="name"/> </div> </template> <scrip

Lilico_的博客 941

两轮差速移动机器人运动分析、建模和控制

两轮差速运动分析及建模运动学分析三种运动状态分析函数模型仿真验证直线验证曲线验证旋转验证运动控制 运动学分析 运动特性为两轮差速驱动,其底部后方两个同构驱动轮的转动为其提供动力,前方的随动轮起支撑作用并不推动其运动,如图1两轮差速驱动示意图所示。 定义其左右驱动轮的中心分别为Wl和Wr,且对应线速度为Vl和Vr,该值可以通过电机驱动接口输出的角转速ωl,ωr2和驱动轮半径r求得,即: Vl=r⋅...

启小新的博客 8万+

vue3-setup中使用响应式

/ info = reactive({name:"vue2"}) 不能使用该方式重新分配响应式对象,使用该方式后,不是原先的响应式info是一个新的响应式info,页面不更新。它主要用于处理复杂的数据类型,如对象和数组,使得这些数据成为响应式数据,即当数据的内容发生变化时,与之绑定的组件模板会自动更新。监视响应式对象中的某个属性,且该属性是基本类型的,要写成函数式(可监视的第三种数据,能返回一个值的函数)// 使用该方式相当于创建了一个新的响应式,而不是原先的响应式,页面是跟原先的响应式关联。

weixin_55010563的博客 874

2022 七校联合NewStarCTF 公开赛赛道 WEEK5|MISC

2022 七校联合NewStarCTF 公开赛赛道 WEEK5|MISC

zerorzeror的博客 3121

EFR32BG22 Thunderboard开发板 使用SPI 读取加速度计

Simplicity Studio v5 创建Silicon Labs蓝牙SoC EFR32BG22 Thunderboard模块的加速度计工程,模块上有一个ICM-20648 6轴运动跟踪设备,集成3轴加速度计和3轴陀螺仪功能,使用SPI接口跟EFR32BG22芯片连接。 我尽量以图片的形式展示(少打字): 将EFR32BG22的Thunderboard模块通过USB线插入到电脑,打开Simplicity Studio v5软件。 下面看重点: 点击搜索到的IO Stream: USART,点击Ins

qq_25727979的博客 1494

vue3学习

目录一、组合API1.1 setup函数1.2 生命周期 1.3 reactive函数1.4 toRef函数 1.5 toRefs函数 1.6 ref函数 1.7 知识运用案例 1.8 computed函数1.9 watch函数 1.10 ref属性1.11 父子通讯 1.12 依赖注入 1.13 v-model语法糖 #博学谷IT学习技术支持#在vue3.0项目中将会使用 写法 总结: 组件初始化之前执行,它返回的数据和函数可在模版使用 总结: 组合API的生命周期钩子有7个,可以多次

Lotus_fragrance的博客 1679

SRAM:SRAM入门指南与工作原理

SRAM(Static Random Access Memory),即静态随机存取存储器,是一种能够读取和写入数据的内存(RAM)。它使用由晶体管组成的触发器来存储数据,只要有电源供应,数据就可以稳定地保存。与动态随机存取存储器(DRAM)不同,SRAM 不需要周期性地刷新来保持数据。

weixin_42896509的博客 1万+

【Vue】Vue3的系统性学习

系统性学习一下Vue3

woodwhale的博客 2307

STM32G0/G4无刷电机硬件设计与FOC控制实现

无刷直流电机(BLDC)和永磁同步电机(PMSM)的矢量控制依赖于高精度电流采样、实时SVPWM调制与闭环PI调节等核心技术。其底层实现需兼顾电机本体建模、坐标变换(Clark/Park)、死区补偿及硬件资源约束。STM32G0系列凭借CORDIC协处理器与超低功耗特性,适用于成本敏感型有感FOC应用;而STM32G4集成运放、FMAC滤波器与高级定时器,可支撑高性能无感控制与多源传感融合。该技术广泛应用于机器人关节、智能云台、伺服驱动等场景,是嵌入式电机控制工程师必须掌握的工程化落地能力。

weixin_35751412的博客 122

第六天 界面操作及美化(6.4 使用GUI 套件)

本文介绍如何使用VIPM工具安装DMC GUI套件:首先打开VIPM并连接网络,搜索"UI"找到DMCGUI套件后下载安装;安装完成后即可在VIPM中添加控件并预览效果。该方法同样适用于下载其他UI套件,用户可根据需求设计个性化界面。整个流程包括搜索、下载、安装和使用四个简单步骤,适合快速搭建GUI界面。

weixin_38637405的博客 407

Vue3.0 —— setup、ref、reactive和 computed的简介及使用

Vue3.0 中 setup、ref、reactive和 computed的简介及使用

z_2532040197的博客 2196

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Vue3 Composition API

Vue3 Composition API setup 函数的使用 setup 在 created 函数被完全实例化之前执行 setup 只能是同步的,不能是异步的 由于在执行 setup 时尚未创建组件实例,因此在 setup 选项中没有 this。这意味着,除了 props 之外,将无法访问组件中声明的任何属性 —— 本地状态、计算属性或方法。 从 setup 返回的所有内容都将暴露给组件的其余部分 (计算属性、方法、生命周期钩子等等) 以及组件的模板。 setup(props,context){

萌萌哒的瑞萌萌的博客 538

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

vue3组合式API

# 第一天

weixin_45090657的博客 1798

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Vue 3 Hooks: 深入理解 Composition API 的魅力

Vue 3 在保留了Vue 2的易用性和灵活性的同时,通过引入Composition API,实现了逻辑的模块化和组件功能的高效复用。Composition API的核心思想是通过组合函数(Composition Functions)来组织和复用逻辑,与React的Hooks有异曲同工之妙,但又有着Vue特有的优雅和简洁。Vue 3 引入了革命性的 Composition API,它提供了一系列的 Hooks(也称为Composition Functions),让组件的逻辑组织更加清晰、复用性更强。

kun_sl的博客 431

Vue3常用Composition API

Vue3常用Composition API

zeo_123的博客 978

VUE|学习笔记④(Vue3核心语法)

一般做项目都有一个types文件夹,里面存放各种各样的类型。此时想要实现对person对象的具体属性进行一些限制,可以通过定义一个接口去定义person对象。但是光是这么写就能使用的,首先需要把这个接口交出去,也就是暴露。暴露有三种方式:默认暴露、分别暴露、统一暴露。这里使用最简单的添加一个export,使用分别暴露。//定义一个接口,用于限制person对象的具体属性id:string,age:number。

2403_89168113的博客 1267

vue3属性以及新用法

之前零零散散的用vue3写一些案例,一直也没有做过任何总结,这段时间忙里偷闲写点东西吧。 vue3新语法统一写在 <script setup lang="ts">,这种组合式API写法,跟vue2完全不一样【vue2采用option api】。 1.ref =》基本数据类型响应 定义的数据需要使用value去获取值 const iptValue = ref('html') const list = ref(['css', 'js']) console.log(iptValue.v..

shimeifang11的博客 5977

Vue3 核心知识点笔记(超级详细教程)

特性refreactive适用类型基本类型、对象类型仅对象类型(对象、数组等)访问方式脚本中需用 .value,模板中不用直接访问属性(无需 .value)本质包装成含 value 的对象返回对象的响应式代理推荐场景基本类型、简单对象或数组复杂对象(如嵌套对象)特性toRefstoRef作用批量转换响应式对象的所有属性单独转换响应式对象的单个属性输入响应式对象响应式对象 + 属性名输出包含多个 ref 的普通对象单个 ref 对象适用场景。

m0_74488469的博客 2120

vue3更改setup中定义的值不渲染到视图?

最近刚开始用vue3啊,真是一坑未平又遇到一坑,记录一下。 setup()中定义了info let info: any = {} 然后调用接口后拿到数据,赋值给info,结果在这方法里输出是可以看到我们拿到值了,但视图上还是木有同步,不仅疑惑了一小会。 捣腾了一番之后,了解到需要ref、.value来更新数据到视图: et info: any = ref({}) // 用ref() 定义 那么赋值的时候就需要加上.value info.value = 后端返回的数据 就会发现,数据已经同步到视图上

M1512415的博客 8590

Vue3知识点总结及个人学习心得

Vue3快速上手

weixin_60537353的博客 1112
上一篇: 【Vue3】回顾watch,学习watchEffect
下一篇: 【Vue3】解锁Vue3黑科技:探索接口、泛型和自定义类型的前端奇迹
小馒头学python
小馒头学python 优质创作者: python技术领域 优质创作者: python技术领域
博客等级 码龄4年 1万+粉丝 252原创
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小馒头学python

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值