重点
使用 defineExpose 来导出方法
// child
<script setup>
import { ref, Ref } from 'vue'const prop: Ref<string> = ref('child')const method = (val: string) => {console.log(val)
}defineExpose({prop,method,
})
</script>
// father
<template><child ref="child" />
</template><script setup>
import { ref } from 'vue'
import child from './child.vue'const child = ref<InstanceType<typeof child>>()child.value.method(child.value.prop)
</script>
详解
< script setup> 组件时默认不导出属性方法的(类似 java 的 private ),即通过 ref 获取实例是无法访问到自定义的属性和方法,但是可以获取到组件实例。
可以通过 defineExpose 来指定要暴露的方法属性,便可以在外部访问到组件自定义的属性方法了。
当然也可以去官网查看官方说法。