vue3父组件使用ref获取子组件的属性和方法
在vue3中父组件访问子组件中的属性和方法是需要借助于ref:
1.<script setup> 中定义响应式变量 例如: const demo1 = ref(null)
2.在引入的子组件标签上绑定ref属性的值与定义的响应式变量同名( <demo1 ref="demo1"/>)。
父组件代码如下:
<template> <demo1 ref="demo1"/> <demo2 ref="demo2"/> <demo3 ref="demo3"/> </template> <script setup> import Demo1 from '@/components/demo1.vue' import Demo2 from '@/components/demo2.vue' import Demo3 from '@/components/demo3.vue' import {ref,onMounted} from 'vue' const demo1 = ref(null) const demo2 = ref(null) const demo3 = ref(null) onMounted(()=> { console.log(demo1.value.count,'demo1子组件') console.log(demo2.value?.a,'demo2子组件') console.log(demo3.value.list[0],"demo3子组件") }) </script>
子组件代码如下:
demo1.vue
<template> <h1>i'm demo1 content{{count}}</h1> </template> <script > import {ref} from 'vue' export default { setup () { const count = ref(999) return { count } } }
此时父组件可以获取到子组件的count属性
demo2
<template> <h1>我是demo2</h1> </template> <script setup> import {defineExpose,ref} from 'vue' const a = ref('helloss') </script>
当使用 <script setup>
写法会导致父组件无法访问到子组件中的属性和方法。
使用
<script setup>
的组件,想要让父组件访问到它的属性和方法需要借助与defineExpose
来指定需要暴露给父组件的属性。
更改后的demo2组件
<template> <h1>我是demo2</h1> </template> <script setup> import {defineExpose,ref} from 'vue' const a = ref('helloss') defineExpose({ a }) </script>
demo3
<template> <h1>我是demo3</h1> </template> <script> export default { data () { return { list:['a','b','c'] } }, methods: { btn () { } } }
这种方式,父组件可以正常获取到里面的属性和方法。
到此这篇关于vue3父组件使用ref获取子组件的属性和方法的文章就介绍到这了,更多相关vue3 ref取获取子组件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
详解Vue3.0中ElementPlus<input输入框自动获取焦点>
这篇文章主要给大家介绍了关于Vue3.0中ElementPlus<input输入框自动获取焦点>的相关资料,文中通过实例代码介绍的非常详细,对大家学习或者使用vue3.0具有一定的参考学习价值,需要的朋友可以参考下2023-04-04
最新评论