父组件:
<template><div class="father"><el-button @click="handle">触发子组件事件</el-button><child ref="children"/></div>
</template><script setup lang="ts">
import {ref} from 'vue'
import child from './child.vue';const children = ref()
function handle(){children.value.clickChild()
}
</script>
子组件:
<template><div class="child">我是子组件</div>
</template><script setup lang="ts">
import {ref} from 'vue'defineExpose({clickChild})
function clickChild(){console.log('我被触发了!');
}
</script>
使用 <script setup>
的组件是默认关闭的——即通过模板引用或者 $parent
链获取到的组件的公开实例,不会暴露任何在 <script setup>
中声明的绑定。
可以通过 defineExpose
编译器宏来显式指定在