vue3 父组件向子组件传参

vue3中父组件向子组件传递参数,核心方案是:父组件用 v-bind 绑定数据,子组件用 defineProps 接收数据(组合式 API 语法)。即:v-bind 传 (父)+ defineProps 收(子)。

步骤:

1.父组件:在使用子组件的标签上,通过 :属性名="数据" 绑定要传递的数据;<Child :数据名="变量"/>

2.子组件:使用 defineProps(Vue3 组合式 API 内置函数,无需导入)声明接收的参数; const props = defineProps({数据名: 类型})

3.子组件使用:直接通过变量名使用父组件传递过来的数据;props.数据名 或模板中直接写 数据名

示例:

1.父组件parent.vue

typescript 复制代码
<template>
  <div class="parent">
    <h2>我是父组件</h2>
    <!-- 核心:向子组件传参 -->
    <!-- 1. 传递普通字符串 -->
    <!-- 2. 传递变量/对象/数组,必须加 : -->
    <Child 
      :msg="parentMsg" 
      :user="userInfo" 
      :list="hobbyList"
    />
  </div>
</template>

<script setup>
// 引入子组件(Vue3 自动注册,无需components)
import Child from './Child.vue'

// 父组件的数据
const parentMsg = '来自父组件的消息'
const userInfo = { name: '张三', age: 20 }
const hobbyList = ['吃饭', '睡觉', '打代码']
</script>

2.子组件child.vue

typescript 复制代码
<template>
  <div class="child">
    <h3>我是子组件</h3>
    <!-- 直接使用接收的参数 -->
    <p>字符串:{{ msg }}</p>
    <p>对象:{{ user.name }} - {{ user.age }}</p>
    <p>数组:{{ list.join('、') }}</p>
  </div>
</template>

<script setup>
// 核心:defineProps 接收父组件传递的参数
// 写法1:简单接收(不校验类型)
// const props = defineProps(['msg', 'user', 'list'])

// 写法2:推荐!带类型校验 + 默认值(更规范)
const props = defineProps({
  // 字符串类型,必传
  msg: {
    type: String,
    required: true
  },
  // 对象类型
  user: {
    type: Object,
    default: () => ({}) // 默认空对象
  },
  // 数组类型
  list: {
    type: Array,
    default: () => [] // 默认空数组
  }
})

// 在 JS 中使用传递的数据:props.xxx
console.log('父组件传递的msg:', props.msg)
console.log('父组件传递的user:', props.user.name)
</script>
相关推荐
鬼手点金4 小时前
nanoGPT/nanochat 能做出 DeepSeek/Qwen 这样的大模型吗?
服务器·前端·javascript·bug·openclaw
蛋蛋的就会顺顺的4 小时前
hot100 p0——栈,贪心算法,动态规划
java·前端·javascript·算法·leetcode·力扣
程序员Sunday4 小时前
TypeScript 的 any、unknown、never 有什么区别?
前端·面试·typescript
朱涛的自习室5 小时前
70 美金的 Beyond Compare,我让 Gemini 4 和 DeepSeek 造个开源免费版(Day 2)
android·前端·人工智能
码艺-Alimjan5 小时前
Tauri 源码备份 · 打包 & 解压 总结,源码收集之路
前端·javascript·vue.js
小马不起床5 小时前
零基础玩转 FastAPI_11:前端后台管理页面
前端·状态模式·fastapi
子非鱼a7 小时前
【文件上传】一个普普通通的edu16
前端
美狐美颜SDK开放平台7 小时前
直播APP如何实现美白滤镜功能?视频美颜SDK技术开发方案详解
前端·数据库·人工智能·音视频·美颜sdk·直播美颜sdk·视频美颜sdk
pride.li8 小时前
第03章 Python 教程-基础语法:注释与变量
服务器·前端·后端·python·算法·计算机视觉
屏什么录8 小时前
电脑如何录屏幕视频和声音?从工具到代码,7 种方案帮你彻底搞定
前端·音视频开发