vue3的最新版本,提供了一个<script setup>的语法糖,可以让我们在编写单文件组件(SFC)时代码更简洁,官网对其对介绍说明:vue官网对setup语法糖的介绍
但是使用了setup语法糖后,我们会发现组件通过$refs无法直接调用子组件的函数、方法。
通过查找官方文档,我们发现官方对其做出了解释说明:使用<script setup>的组件默认是关闭的,即通过模板 ref 或者 $parent 链获取到的组件的公开实例,不会暴露任何在 <script setup> 中声明的绑。defineExpose的说明
要解决这个问题很简单,只需要在被调用的子组件中,通过defineExpose暴露对应的函数、属性即可。如下:
<!-- 子组件 -->
<template>
<div>children</div>
</template>
<script setup>
const count = ref(0)
function test() {
console.log(‘子组件的方法’)
}
defineExpose({
test,
count
})
</script>