Vue3 如何获取slots中组件的expose?

问题描述:
Child中暴露了一个数据count,并通过插槽添加到Parent,我想在Parent中通过useSlots获取到Child组件,然后再获取count,但是这里获取到的是VNode类型的,无法获取到count,请问如何解决?或者是否有其他解决方法?

Child组件:

<template>
  <div class="child">{{ count }}</div>
</template>
<script lang='ts' setup>
  import { ref } from 'vue'
  const count = ref(1)
  defineExpose({
    count
  })
</script>

Parent组件:

<template>
  <div class="parent">
    <slot></slot>
  </div>
</template>
<script lang='ts' setup>
  import { useSlots, onMounted, VNode } from 'vue'
  const slots = useSlots()
  onMounted(() => {
    if (slots && slots.default) {
      slots.default().forEach((vn: VNode) => {
        // 这里如何获取插槽中Child组件的expose?
      })
    }
  })
</script>
阅读 4.2k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏