You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue3中<script setup>的defineExpose无法正常使用问题求助

Vue3 defineExpose 使用错误修正

你当前的问题出在直接通过组件名访问暴露的属性——defineExpose暴露的是组件实例的属性,不是组件本身的静态属性,必须先获取子组件的实例引用才能访问。

修改后的App.vue代码

<script setup>
import HelloWorld from './components/HelloWorld.vue'
import { ref } from 'vue'

// 创建ref用于绑定子组件实例
const helloWorldRef = ref(null)
</script>

<template>
  <main>
    <!-- 给子组件添加ref属性,绑定到helloWorldRef -->
    <HelloWorld ref="helloWorldRef" />
    <!-- 用可选链避免初始化时null报错,或者加v-if判断实例是否存在 -->
    <h1>version:{{ helloWorldRef?.value?.version }}</h1>
  </main>
</template>

HelloWorld.vue代码无需修改

你的子组件代码是正确的,defineExpose({ version })已经正确暴露了响应式的version属性:

<script setup>
import { ref } from 'vue';

const version = ref('1.0.0');

defineExpose({ version });
</script>

<template>
    <div>
        <h3> You’ve successfully created a project with Vue.js and Vuetify. </h3>
    </div>
</template>

核心原因说明

在Vue3的<script setup>语法糖中,组件的内部属性默认是对外隐藏的,必须通过defineExpose显式暴露,但这些属性属于组件实例,不是组件构造函数的静态属性。所以你不能直接用HelloWorld.version访问,必须通过ref获取组件实例后,再通过实例对象访问暴露的属性。

内容的提问来源于stack exchange,提问作者mzaiprog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 10:06:17