Vue3 Props 属性
一、Props 是什么想象一下你正在组装一个乐高机器人。机器人的头部、手臂、腿部都是独立的组件。为了让手臂知道它应该连接在身体的哪个位置你需要给它一个“连接点”的指令。在 Vue3 中Props就是这个“指令”它是父组件向子组件传递数据的一种方式。简单来说Props 是组件的自定义属性父组件通过它来给子组件“喂”数据。二、Props 的核心作用Props 主要解决组件间的通信问题具体作用如下数据传递父组件可以把数据字符串、数字、数组、对象等传递给子组件。配置组件通过传递不同的 Props 值可以让同一个子组件呈现不同的状态或行为实现复用。单向数据流数据只能从父组件流向子组件这保证了数据变化的可预测性便于调试。类型检查Vue3 的 Composition API 和 script setup 语法支持对 Props 进行类型定义提升代码健壮性。三、Props 的属性Props 选项在 Vue3 中定义 Props 时可以配置多种属性来约束和描述数据。以下是常用的 Props 属性type指定 Prop 的数据类型如String、Number、Boolean、Array、Object、Date、Function、Symbol或自定义构造函数。required布尔值表示该 Prop 是否为必传项。default指定 Prop 的默认值。可以是固定值也可以是一个返回默认值的函数。validator自定义验证函数用于校验传入的 Prop 值是否有效。四、如何接受和使用 Props代码案例1. 使用 script setup 语法推荐这是 Vue3 组合式 API 中最简洁的写法。提示带有define开头的都是宏声明属性不需要引入!-- 子组件 ChildComponent.vue -- template div h3子组件/h3 p接收到的标题{{ title }}/p p接收到的数量{{ count }}/p p用户信息{{ user.name }} ({{ user.age }}岁)/p ul li v-foritem in items :keyitem{{ item }}/li /ul /div /template script setup // 使用 defineProps 宏来声明 Props const props defineProps({ // 类型 必填 title: { type: String, required: true }, // 类型 默认值 count: { type: Number, default: 0 }, // 对象类型 默认值函数 user: { type: Object, default: () ({ name: 匿名, age: 18 }) }, // 数组类型 items: { type: Array, default: () [] }, // 自定义验证器 score: { type: Number, validator: (value) { return value 0 value 100; } } }); // 在模板或逻辑中直接使用 props.title, props.count 等 console.log(props.title); /script!-- 父组件 ParentComponent.vue -- template div h2父组件/h2 ChildComponent title用户列表 :countuserCount :usercurrentUser :itemstodoList :score85 / /div /template script setup import { ref } from vue; import ChildComponent from ./ChildComponent.vue; const userCount ref(5); const currentUser ref({ name: 张三, age: 25 }); const todoList ref([学习 Vue, 写代码, 阅读文档]); /script补充数组形式的 defineProps除了使用对象形式定义 Props 外defineProps也支持简单的数组形式。defineProps 是有返回值的script setup // 数组形式仅声明属性名所有属性类型默认为任意类型 const props defineProps([title, count, user]); // 在模板中可以直接使用 console.log(props.title); // 来自父组件传递的值 console.log(props.count); /script推荐做法在正式项目中为了更好的代码健壮性和开发体验建议使用对象形式如上方示例或 TypeScript 泛型形式来定义 Props以便获得完整的类型检查和 IDE 提示。2. 使用 TypeScript 与类型标注结合 TypeScript 可以获得更完善的类型提示和检查。!-- 子组件 ChildComponent.vue -- template !-- 同上 -- /template script setup langts interface User { name: string; age: number; } // 使用接口定义 Props 类型 interface Props { title: string; count?: number; // 可选 user: User; items: string[]; score?: number; } // 使用泛型 defineProps const props definePropsProps(); // 或者提供默认值需要 withDefaults 辅助函数 const propsWithDefaults withDefaults(definePropsProps(), { count: 0, user: () ({ name: 匿名, age: 18 }), items: () [], }); /script3. 使用选项式 API这是 Vue2 风格的写法在 Vue3 中仍然兼容。!-- 子组件 ChildComponent.vue -- template !-- 同上 -- /template script export default { name: ChildComponent, // 在 props 选项中声明 props: { title: { type: String, required: true }, count: { type: Number, default: 0 }, user: { type: Object, default: () ({ name: 匿名, age: 18 }) }, items: { type: Array, default: () [] }, score: { type: Number, validator: function(value) { return value 0 value 100; } } }, setup(props) { // 在 setup 函数中访问 props console.log(props.title); return {}; } } /script五、使用 Props 的注意事项单向数据流不要在子组件内部直接修改 PropsVue 会警告。如果需要修改应该在子组件内定义一个新的响应式数据如使用ref或computed来接收 Prop 的初始值。Prop 命名在 JavaScript 中使用 camelCase如userName在模板中建议使用 kebab-case如user-name。动态与静态传递使用:绑定是动态传递响应式不使用:是静态字符串传递。复杂对象默认值对象或数组的default必须是一个工厂函数返回新对象避免多个组件实例共享同一引用。

相关新闻

reCamera HQ POE摄像头30分钟快速部署与配置全攻略

reCamera HQ POE摄像头30分钟快速部署与配置全攻略

1. 项目概述:从开箱到上线的全流程解析当你拿到一台全新的 reCamera HQ POE 时,那种混合着期待和一丝无从下手的感觉,我太熟悉了。这不仅仅是一个摄像头,更是一个集成了高清画质、POE供电和智能分析能力的专业安防节点。在过去几年…

2026/8/2 13:03:29 阅读更多 →
AI代码生成实战:从物理模拟到实时渲染的Canvas图形编程优化

AI代码生成实战:从物理模拟到实时渲染的Canvas图形编程优化

1. 从“Kimi K2.7 Code”说起:一次关于代码生成与渲染的极限测试最近在开发者圈子里,一个关于“Kimi K2.7 Code”的测试项目火了起来。这个项目听起来就很有意思,它并不是一个官方发布的版本,更像是一次社区驱动的、针对Kimi大模型…

2026/8/2 13:03:29 阅读更多 →
DS18B20温度传感器:从85度到真实温度的底层原理与STM32实战

DS18B20温度传感器:从85度到真实温度的底层原理与STM32实战

1. 从85度到真实温度:DS18B20温度换算的底层逻辑 如果你玩过单片机,尤其是Arduino或者STM32,大概率接触过DS18B20这个数字温度传感器。它价格便宜、精度尚可、接口简单,一度是DIY温控项目的首选。但很多新手,包括当年的…

2026/8/2 13:02:29 阅读更多 →

最新新闻

树莓派驱动9.7英寸墨水屏:从硬件连接到信息看板实战

树莓派驱动9.7英寸墨水屏:从硬件连接到信息看板实战

1. 项目概述:当墨水屏遇上树莓派 如果你手头有一块树莓派,并且对低功耗、常显、护眼的显示方案感兴趣,那么“9.7inch e-Paper HAT”这个项目绝对值得你深入了解。这不仅仅是一块简单的屏幕,它是一个完整的硬件与软件解决方案&…

2026/8/2 13:57:55 阅读更多 →
Python图形界面(GUI)Tkinter笔记(二十九):OptionMenu下拉式列表控件方法

Python图形界面(GUI)Tkinter笔记(二十九):OptionMenu下拉式列表控件方法

在Tkinter库中,OptionMenu是提供下拉选择功能的界面组件,支持用户从预设选项集合中选取单一数值。 一、OptionMenu下拉式列表控件的核心应用场景: 1. 单选交互:提供预定义选项列表,供用户单选(如语言、主题设置)。 2. 数据绑定与响应:通过 StringVar 自动同步选中值…

2026/8/2 13:57:55 阅读更多 →
Qt GUI开发入门:从环境搭建到界面设计实战指南

Qt GUI开发入门:从环境搭建到界面设计实战指南

1. 项目概述:为什么选择Qt作为你的第一个GUI框架? 如果你刚接触C,或者已经写了不少控制台程序,想给自己的代码一个“看得见”的界面,那么Qt几乎是一个绕不开的名字。我刚开始学编程那会儿,也纠结过是学MFC、…

2026/8/2 13:57:55 阅读更多 →
树莓派AI赛车实战:从硬件拆解到自动驾驶模型部署全解析

树莓派AI赛车实战:从硬件拆解到自动驾驶模型部署全解析

1. 项目概述:当树莓派赛车遇上AI大脑如果你玩过树莓派,大概率也听说过或者折腾过那些基于树莓派的小车项目。从简单的蓝牙遥控车到能循迹、避障的智能小车,乐趣不少,但总感觉缺了点什么——那种真正的、能像人一样“看”路、“想”…

2026/8/2 13:57:55 阅读更多 →
ArcReel:AI视频生成工作台终极指南 - 从小说到专业视频的完整创作方案

ArcReel:AI视频生成工作台终极指南 - 从小说到专业视频的完整创作方案

ArcReel:AI视频生成工作台终极指南 - 从小说到专业视频的完整创作方案 【免费下载链接】ArcReel AI Agent 驱动的开源视频生成工作台 — 小说→角色/场景/道具设计→剧本→分镜图→视频,跨镜头角色与场景一致 | Open-source AI video workspace powered …

2026/8/2 13:57:55 阅读更多 →
从零构建虚幻引擎Pak文件解析器:原理、实现与实战应用

从零构建虚幻引擎Pak文件解析器:原理、实现与实战应用

1. 项目概述:为什么我们需要一个Pak文件解析器?如果你是一名虚幻引擎(Unreal Engine)的开发者,无论是从事游戏开发、虚拟仿真还是数字孪生项目,那么“Pak”文件对你来说一定不陌生。它就像是虚幻引擎世界的…

2026/8/2 13:56:55 阅读更多 →

日新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/2 0:00:38 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/2 0:00:38 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/2 0:00:38 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/2 0:00:38 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/2 0:00:38 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/2 0:00:38 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/2 6:34:16 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/2 2:47:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/2 0:23:22 阅读更多 →