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

Vue组合式API父子组件传值及父组件数据定义问题

Vue组件Props传值与组合式API数据定义问题解决

1. App.vue向:name传值的正确方式

你的代码存在两处关键错误:

  • 模板动态绑定语法:<HelloWorld :name=refName/> 缺少引号包裹变量,解析时触发unexpected end of expression错误,应改为 <HelloWorld :name="refName"/>
  • Ref值修改错误:直接赋值refName = "test"会覆盖Ref对象,组合式API中必须通过.value修改Ref值,即 refName.value = "test"
  • 冗余代码:App作为父组件无需通过defineProps接收name_,直接定义内部数据即可

2. 父组件用组合式API定义数据的正确方式

在<script setup>中,直接使用ref或reactive定义响应式数据即可,无需额外配置。以下是修正后的完整代码:

修正后的App.vue

<template>
  <HelloWorld :name="refName"/>
</template>

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

// 用ref定义响应式数据
const refName = ref('初始值')
// 修改Ref值必须通过.value
refName.value = "test"
</script>

修正后的HelloWorld.vue(推荐添加props类型校验)

<template>
  <div class="hello">
    <h1>{{ name }}</h1>
  </div>
</template>

<script setup>
import { defineProps } from "vue";

// 定义props并添加类型校验,提升代码健壮性
const props = defineProps({
  name: String,
  address: String,
  phone: String
})

// 解构props,模板中可直接使用name
const { name } = props
</script>

核心要点

  • 动态绑定属性时,变量必须用双引号包裹,避免解析错误
  • 组合式API中,ref变量的修改必须通过.value
  • 父组件传值给子组件时,只需在父组件定义响应式数据,子组件通过defineProps接收即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 16:05:18