Vue3前端开发,如何获取组件内dom对象以及子组件的属性和方法

这篇具有很好参考价值的文章主要介绍了Vue3前端开发,如何获取组件内dom对象以及子组件的属性和方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Vue3前端开发,借助Ref来获取组件内dom对象,借助defineExpose编译宏可以获取到子组件的属性和方法。


<script setup>
import {onMounted, ref} from 'vue'
import Base from './components/Base.vue'
import SetupDemo from './components/SetupDemo.vue'
import ReactiveDemo from './components/ReactiveDemo.vue'
import ComputedDemo from './components/ComputedDemo.vue'
import WatchDemo from './components/WatchDemo.vue'
import MutationsDemo from './components/MutationsDemo.vue'
import WatchDemo2 from './components/WatchDemo2.vue'
import LifeDemo from './components/LifeDemo.vue'
import ImageDemo2 from './components/ImageDemo2.vue'
import Parent from './components/Parent.vue'
import Child from './components/Child.vue'
import TestCom from './components/TestCom.vue'

const priceRef = ref(null)
onMounted(()=>{
  console.log(priceRef.value);
})
</script>
<template>

  <h3>入口文件</h3>
  
<!-- 1-用ref函数来获取组件内的dom对象。 -->
<p ref="priceRef">车厘子单价:49</p>
<TestCom />
</template>


app入口文件,我们作为父组件,在里面调用了自定义组件TestCom.vue。

先做了一个测试,借助于ref来访问自身的dom对象。如图所示是可以拿到的。

Vue3前端开发,如何获取组件内dom对象以及子组件的属性和方法,VUE3,前端,javascript,vue.js

ref又称谓钩子函数,在vue2版本中,就是靠它来获取dom对象的。可以查看我之前写的一篇文章。文章入口地址:【为什么ref称作钩子函数】。

传统的vue2里面,我们访问dom时的代码,还是的借助于this对象的【this.$refs.userName】。现在Vue3放弃了this对象。直接从源码里结构出来一个宏对象就行了【const priceRef = ref(null)】。

想获取哪个dom,就给它身上绑定一个这样的ref实例。


下面展示的是,借助于ref来访问子组件的实例对象。(声明:默认情况下,子组件内部的属性和方法,不会主动对外暴漏的。想暴漏给别人访问,需要借助于defineExpose)

<script setup>
import {onMounted, ref} from 'vue'
import Base from './components/Base.vue'
import SetupDemo from './components/SetupDemo.vue'
import ReactiveDemo from './components/ReactiveDemo.vue'
import ComputedDemo from './components/ComputedDemo.vue'
import WatchDemo from './components/WatchDemo.vue'
import MutationsDemo from './components/MutationsDemo.vue'
import WatchDemo2 from './components/WatchDemo2.vue'
import LifeDemo from './components/LifeDemo.vue'
import ImageDemo2 from './components/ImageDemo2.vue'
import Parent from './components/Parent.vue'
import Child from './components/Child.vue'
import TestCom from './components/TestCom.vue'

const priceRef = ref(null)
const comRef = ref(null)
onMounted(()=>{
  // console.log(priceRef.value);
  console.log(comRef.value);
})
</script>
<template>

  <h3>入口文件</h3>
  
<!-- 1-用ref函数来获取组件内的dom对象。 -->
<p ref="priceRef">车厘子单价:49</p>
<TestCom ref="comRef" />
</template>

如图所示,代码里面我们给子组件实例调用的标签上绑定了一个ref对象。然后控制台打印一下。

Vue3前端开发,如何获取组件内dom对象以及子组件的属性和方法,VUE3,前端,javascript,vue.js

页面加载之后,确实是可以拿到子组件的实例对象。但是看不见子组件内的属性和方法。


<script setup>
const msg = '子组件文本'
const btnHandle = ()=>{
    console.log('i am son btnHandle ');
}
defineExpose({
    msg,
    btnHandle
})
</script>
<template>
    <h3>获取组件内的dom对象练习-获取组件的内部属性和方法</h3>

</template>

这个是子组件里面的内容,我们定义了一个常量,一个方法。

然后使用了defineExpose编译宏函数对外暴漏这个属性和方法。再看看父组件内的加载完成后的控制台打印情况吧。

Vue3前端开发,如何获取组件内dom对象以及子组件的属性和方法,VUE3,前端,javascript,vue.js

如图,确实是可以拿到子组件的属性和方法了,如果不使用编译宏,是访问不到的。

之所以默认不对外暴漏,就是为了避免出现数据的干扰。毕竟,父子组件之间,各司其职。不应该轻易的去影响各自的业务逻辑。除非特殊情况下,真的需要访问了,才会使用这个编译宏对外暴漏。文章来源地址https://www.toymoban.com/news/detail-813923.html

到了这里,关于Vue3前端开发,如何获取组件内dom对象以及子组件的属性和方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue3前端开发,父组件给子组件传递数据练习

    Vue3前端开发,父组件给子组件传递数据练习!还是借用刚刚的组件模板,来开展父传子的练习。 依旧是需要借助官方提供的宏函数来接收数据。defineProps. 这个是父组件里面的内容。我们自定义了2个变量,一个是车厘子单价。一个是纯文本。 一个数字类型,一个文本类型。都

    2024年01月22日
    浏览(33)
  • vue3 - vue3中使用ref来获取dom节点

    vue3和vue2获取元素的不同:vue2是通过 this.$refs api获取dom节点的 ; vue3是 直接使用同名的 ref 响应式数据来获取的; 1,常规使用 注意: 节点上的 ref=“input” 需要和 const input = ref(null)相对应 才能获取到此dom节点 2,v-for中的ref获取 有时我们需要 获取循环中的dom节点 并根据状态

    2024年02月16日
    浏览(38)
  • 前端react入门day03-react获取dom与组件通信

    (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 受控表单绑定  React中获取DOM 组件通信 父传子  父传子-基础实现 父传子-props说明 父传子 - 特殊的prop children 子传父  使用状态提升实现兄弟组件通信 使用Context机制跨

    2024年02月01日
    浏览(40)
  • vue3 使用ref 获取 dom 元素的高度

    代码实现: 输出结果:  

    2024年02月16日
    浏览(31)
  • vue3使用ref获取dom结果为‘null’

    在vue2中,我们使用ref获取dom元素时是这样子的: 在vue3中,我们使用ref获取dom元素时是这样子的: 下面来说说vue3中获取dom为空的原因: setup的return中应该抛出ref封装的字段,否则ref的值只是定义了并不能响应式使用,事实上,所有ref或者reactive定义的值都应在return中抛出。

    2024年02月12日
    浏览(39)
  • uniapp小程序vue3获取dom实例createSelectorQuery

    需求,在页面中,有时需要获取渲染组件的长宽信息,可以使用 select 选择器进行查询,直接上代码如下:

    2024年02月16日
    浏览(37)
  • Vite+Vue3项目如何获取环境配置,并解决前端跨域问题

    根目录新建.env.development和.env.production文件 package.json配置启动参数 vite命令启动项目时,指定mode参数,加载vite.config.ts文件。 配置代理 在vite.config.ts中配置代理 配置vite-plugin-html 通过vite-plugin-html组件,可以将配置文件中的数据,绑定到index.html中,可以实现不同环境的页面ti

    2024年02月19日
    浏览(42)
  • 解决vue3+echarts关于无法获取dom宽度和高度的问题

    近期写vue3项目,很多地方都用到了echarts,刚开始写的时候,发现图一直出不来,报错/报警内容一般有两项: Uncaught (in promise) Error: Initialize failed: invalid dom. vue3 [ECharts] Can’t get DOM width or height. 分别解释一下这俩报错 第一个报错是在初始化echarts的时候,没有找到对应的dom元素

    2024年02月14日
    浏览(30)
  • 前端新手Vue3+Vite+Ts+Pinia+Sass项目指北系列文章 —— 第十一章 基础界面开发 (组件封装和使用)

    Vue 是前端开发中非常常见的一种框架,它的易用性和灵活性使得它成为了很多开发者的首选。而在 Vue2 版本中,组件的开发也变得非常简单,但随着 Vue3 版本的发布,组件开发有了更多的特性和优化,为我们的业务开发带来了更多便利。本文将介绍如何使用 Vue3 开发业务组件

    2024年02月19日
    浏览(49)
  • vue3获取this对象

    在vue3,获取this对象有两种方式 setup的第二个参数context是执行上下文的参数,打印contex如下所示 可以获取子传父属性的对象信息内容emit方法   getCurrentInstance方法,获取当前组件的实例、上下文来操作router和vuex等 使用:由vue提供,按需引入:import { getCurrentInstance} from \\\'vue\\\' 此

    2024年02月16日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包