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父子组件emit参数传递问题(解决Vue2this.$emit无效问题)
相信很多人在利用事件驱动向父组件扔东西的时候,发现原来最常用的this.$emit咋报错了,竟然用不了了,下面通过本文给大家分享关于Vue3父子组件emit参数传递问题(解决Vue2this.$emit无效问题),需要的朋友可以参考下2022-07-07
laravel+vue组合的项目中引入ueditor方式(打包成组件形式)
今天小编就为大家分享一篇laravel+vue组合的项目中引入ueditor方式(打包成组件形式),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2019-11-11
Vue.js@2.6.10更新内置错误处机制Fundebug同步支持相应错误监控
这篇文章主要介绍了Vue.js@2.6.10更新内置错误处机制,Fundebug同步支持相应错误监控 ,需要的朋友可以参考下2019-05-05


最新评论