关于Vue3父组件获取子组件的数据疑问?
父组件
<template>
<son ref="sonRef" />
<el-button @click='getSonData'>读取</el-button>
</template>
<script setup lang="ts">
import { ref } from 'vue'
const sonRef = ref(null)
const getSonData = () => {
console.log(sonRef.value.data)
}
</scrip>
子组件
<template>
<div> {{ data }}</div>
</template>
<script setup lang="ts">
import { ref } from 'vue'
const data = ref('abc')
defineExpose({
data
})
</script>
为什么执行getSonData的时候,无法获取到子组件的data?sonRef.value.data只能在onMounted内使用吗?不能在父组件的方法里执行?
回复
1个回答
test
2024-07-03
这个正常情况下是不需要设置nextTick 或者 onMounted
的,如果出现获取子组件属性undefined
的情况,是因为子组件未渲染完成;
可尝试使用
const getSonData = () => {
// nextTick 是一个异步操作
nextTick(() => {
console.log(sonRef.value.data)
})
}
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容