首页 > 其他分享 >Vue中的$refs 用法

Vue中的$refs 用法

时间:2023-12-26 16:31:43浏览次数:27  
标签:Vue DOM refs 用法 实例 组件 模板

Vue中的$refs 用法

Vue中的$refs原理涉及到Vue实例的生命周期、虚拟DOM以及一些底层的JavaScript原理。

  1. Vue实例的生命周期: 当Vue实例被创建时,它会经历一系列的生命周期钩子,包括beforeCreatecreatedbeforeMountmounted等。在mounted生命周期钩子中,Vue实例的模板已经渲染到真实的DOM上,此时$refs会被填充。
  2. 模板编译: Vue的模板编译过程将模板转换为渲染函数,这个渲染函数生成虚拟DOM。在编译过程中,识别到有ref属性的元素或组件,Vue会在实例的$refs对象上创建相应的引用。
  3. 虚拟DOM与真实DOM关联: Vue使用虚拟DOM来高效地更新实际的DOM。当模板渲染到真实DOM上后,Vue会建立虚拟DOM与真实DOM的关联关系。这时,ref属性的元素或组件的引用被保存在Vue实例的$refs对象上。
  4. $refs的填充:mounted生命周期钩子中,Vue实例的$refs对象已经被填充,可以通过this.$refs访问这些引用。

举个例子,如果有以下模板代码:

<template>
  <div>
    <my-component ref="md"></my-component>
    <button ref="myButton">Click me</button>
  </div>
</template>

mounted钩子执行后,this.$refs将包含两个引用:mdmyButton,分别指向<my-component>组件实例和<button>元素。

总的来说,$refs的原理涉及Vue实例生命周期、模板编译、虚拟DOM和真实DOM的关联过程。这使得我们能够在Vue组件中方便地访问子组件或DOM元素的引用。

举个例子

Vue中的$refs 用法_上传

在Vue中,$refs是一个特殊的对象,用于访问在模板中使用ref属性声明的子组件或DOM元素。而你提到的$refs.md中的.md可能是指某个具体的子组件或者DOM元素的引用。

proxy.$refs.md.$img2Url(pos, res.data): 使用 Vue 中的 $refs 来获取名为 md 的子组件,并调用其 $img2Url 方法,传递位置 (pos) 和上传成功的数据 (res.data)。

proxy.$modal.msgSuccess("上传成功"): 使用 Vue 实例中的 $modal 对象,调用 msgSuccess 方法,显示上传成功的提示消息。

假设你在模板中有这样的代码:

<template>
  <div>
    <my-component ref="md"></my-component>
  </div>
</template>

在这个例子中,$refs.md将会是对<my-component>组件实例的引用。你可以通过这个引用来访问和操作<my-component>组件的属性和方法。

如果你的代码中有其他使用ref属性的元素或组件,那么$refs对象将包含对这些元素或组件的引用,每个引用的键名就是ref属性的值。


欢迎关注公-众-号【TaonyDaily】、留言、评论,一起学习。

Vue中的$refs 用法_生命周期_02

Don’t reinvent the wheel, library code is there to help.


若有帮助到您,欢迎点赞、转发、支持,您的支持是对我坚持最好的肯定(_)

你要保守你心,胜过保守一切。

作者:刘俊涛的博客


标签:Vue,DOM,refs,用法,实例,组件,模板
From: https://blog.51cto.com/love/8984786

相关文章

  • vue3学习之逻辑复用
    逻辑复用-组合式函数 src/views/ad/User.vue<scriptsetup>import{useMouse}from"../../js/mouse.js";import{useFetch}from"../../js/fetch.js";import{ref,computed}from"vue";//组合式函数const{x,y}=useMouse();/......
  • 基于SpringBoot+Vue的毕业设计系统的开发设计实现(源码+lw+部署文档+讲解等)
    (文章目录)前言:heartpulse:博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌:heartpulse:......
  • vue3学习基础之组件
    组件Comp.vue<scriptsetup>import{ref,provide,readonly,defineAsyncComponent}from"vue";importDemoCompfrom"../../components/simple/DemoComp.vue";importErrorComponentfrom"../../components/simple/ErrorComp.vue&......
  • vue3学习基础之响应式状态
    响应式状态<scriptsetup>import{ref,reactive,computed,watch,watchEffect}from"vue";//reactive响应式对象只能用于对象、数组和集合类型constauthor=reactive({name:"JohnDoe",books:["Vue2-AdvancedGuide","Vue3-......
  • vue3学习基础之事件绑定
    事件绑定<scriptsetup>import{nextTick,ref}from"vue";functionclickA(){console.log("点击了a标签,点击事件传递到了外层p标签");}functionclickStop(){console.log("点击了a标签,点击事件停止向外层传递");}functionclickOnce(){console.log......
  • vue3学习基础之表单相关
    表单相关<scriptsetup>import{ref}from"vue";constmessage=ref("hello");constchecked=ref();constcheckedNames=ref([]);constpicked=ref();constselected=ref();constmulSelected=ref([]);constnum=ref(5);......
  • vue3学习基础之vue-router
    我的vue3学习之路总是学学停停,最开始在18年开发微信小程序,就发现小程序和vue的语法有些相似,然后就去看了vue2的文档,随后忙其它的事情就丢下了。直到22年又开始捡起来vue3,有了组合式api,语法简明很多,然后又不知道忙什么丢下。。。前段有些空时间,就把vue3的学习整理下,使用vite构建......
  • 【源码系列#04】Vue3侦听器原理(Watch)
    专栏分享:vue2源码专栏,vue3源码专栏,vuerouter源码专栏,玩具项目专栏,硬核......
  • VLOOKUP函数16种经典用法
    功能:在表格的首列查找指定的数值,并返回表格当前行中指定列处的数值。结构:=VLOOKUP(查找值,查找区域,列序数,匹配条件)解释:=VLOOKUP(找谁,在哪里找,第几列,0或1)说明:1、第一参数:查找值(找谁),比如说根据【姓名】来查找【成绩】,【姓名】就是查找值2、第二参数:查找区域(在哪里......
  • 【Vue】依赖追踪
    在明白原理之前,我们有很多表面现象、使用场景需要记忆。明白了原理后,你会发现它们已经不需要记了,因为从原理出发,你自己都能把它们推导出来,一切是那么的自然而然。感觉就是:这还用记吗?很明显嘛!之前我对vue的响应式原理,只是一知半解,导致开发中经常会出现疑问,比如:为什么有的数据它不......