Vue3使用setup语法糖后父组件$refs无法使用调用子组件函数、属性的解决方法

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>

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容