组件通信:Props 与 Emit
第7课 组件通信Props 与 Emit能将页面拆分为独立的组件并组合使用掌握Props实现父组件向子组件传递数据类型校验、默认值掌握Emit实现子组件向父组件通信自定义事件传参理解单向数据流与“数据在谁手里逻辑就在谁那里”的设计原则1. 组件的基础使用组件就是一个独立的.vue文件自带 template、script、style 三件套。使用组件需要三步步骤操作写法创建新建.vue文件src/components/AppHeader.vue注册在父组件中import引入import AppHeader from ./components/AppHeader.vue使用在父组件模板中像标签一样写AppHeader /在script setup中import即自动注册无需额外代码。2. 父传子PropsProps是父组件传递给子组件的“数据包裹”子组件通过defineProps声明自己需要接收哪些数据。2.1 子组件声明接收script setup // AppHeader.vue const props defineProps({ title: { type: String, // 类型校验 default: 后台管理系统 // 默认值父组件没传时使用 }, userInfo: { type: Object, default: () ({ name: 游客, role: 访客 }) // 对象/数组默认值必须用函数返回 } }) /script声明后模板中直接使用 props 名称无需.value{{ title }}、{{ userInfo.name }}。2.2 父组件传值!-- 静态传值不带冒号直接传字符串 -- AppHeader title静态标题 / !-- 动态传值带冒号将变量的值传过去 -- AppHeader :user-infouserInfo /关键动态传值必须加冒号:否则右边会被当作字符串字面量如userInfo这个字符串而不是变量值。2.3 命名规则驼峰 vs 短横线子组件声明时使用camelCase驼峰userInfo父组件传递时使用kebab-case短横线:user-info模板中使用时使用camelCase{{ userInfo }}Vue 会自动进行转换单单词无需变化如title。2.4 单向数据流Props 是只读的子组件不能直接修改接收到的 props否则控制台会警告target is readonly。如果需要改变应通过emit 通知父组件修改或由父组件重新传入新值。2.5 类型校验与默认值type可指定String、Number、Boolean、Array、Object等传错时控制台会亮警告不影响运行。default基本类型直接写值对象/数组必须写成函数每次返回新对象副本避免多个组件实例共享同一份数据。3. 子传父Emit (自定义事件)子组件可以通过emit向父组件“按门铃”——通知父组件发生了什么事并可携带参数。3.1 子组件声明与触发script setup // AppMenu.vue const emit defineEmits([select-menu]) // 声明事件 function handleClick(menu) { emit(select-menu, menu) // 触发事件并将 menu 对象作为参数传出 } /script3.2 父组件监听与处理template AppMenu select-menuhandleSelectMenu / /template script setup function handleSelectMenu(menu) { // menu 就是子组件传过来的参数 activeMenu.value menu.name } /script事件带参emit(事件名, 参数)的第二个参数即载荷父组件监听函数直接以参数形式接收。3.3 事件命名建议使用动词开头或短横线连接logout、select-menu三处命名必须完全一致defineEmits([...])、emit(...)、...这是最常见的坑。4. 组件通信模式总结方向机制写法关键词父 → 子Props子defineProps父:属性数据子 → 父Emit子defineEmitsemit(事件)父事件函数核心原则“数据在谁手里逻辑就在谁那里”。父组件持有数据和业务逻辑子组件只负责展现和上报事件。5. 组件命名与拆分规范命名规范组件文件名PascalCase多单词如AppHeader.vue避免与原生标签冲突。自定义事件动词开头、短横线分隔如select-menu。应用级组件建议加统一前缀如App方便识别。何时拆分组件三个信号同一段代码在多个地方重复出现如多个页面共用同一个头部单个文件过长滚动寻代码费劲某块区域的数据和逻辑自成一体与其它部分无关6. 常见问题排查表现象可能原因解决办法组件不显示import路径错误、文件名大小写不对、模板中未使用标签核对路径、文件名确认标签已写在模板中子组件接收不到数据父组件未传值、动态传值忘加冒号、属性名不一致驼峰/短横线检查:user-info与userInfo对应确保已传控制台类型校验警告传入的值类型与defineProps声明不符按警告提示修正类型例如应传对象却传了数字子组件修改 props 报警告违反了单向数据流改用emit通知父组件修改或由父组件重新传值点击子组件按钮无反应事件名三处不一致defineEmits/emit/事件让这三处的名字保持完全一致菜单高亮/内容不切换父组件监听函数未更新响应式数据确认函数中修改了对应的ref/reactive状态关键代码速查!-- 父组件传递数据 监听事件 -- AppHeader title后台管理系统 :user-infouserInfo logouthandleLogout / !-- 子组件接收 Props 声明 -- script setup const props defineProps({ title: { type: String, default: 默认标题 }, userInfo: { type: Object, default: () ({ name: 游客 }) } }) /script !-- 子组件 Emit 声明与触发 -- script setup const emit defineEmits([logout, select-menu]) emit(select-menu, { name: 用户管理 }) // 带参 /script

相关新闻

JumpAppify-Desktop-Entry:将普通桌面程序转换为Run-or-Raise神器

JumpAppify-Desktop-Entry:将普通桌面程序转换为Run-or-Raise神器

JumpAppify-Desktop-Entry:将普通桌面程序转换为Run-or-Raise神器 【免费下载链接】jumpapp A run-or-raise application switcher for any X11 desktop 项目地址: https://gitcode.com/gh_mirrors/ju/jumpapp JumpApp是一款为X11桌面环境设计的Run-or-Raise…

2026/8/10 20:27:26 阅读更多 →
2024年必学的Next.js生态工具:Awesome Next.js精选20+实用库推荐

2024年必学的Next.js生态工具:Awesome Next.js精选20+实用库推荐

2024年必学的Next.js生态工具:Awesome Next.js精选20实用库推荐 【免费下载链接】awesome-nextjs A curated list of awesome Nextjs-based libraries that help build small and large-scale applications with next.js. 项目地址: https://gitcode.com/gh_mirro…

2026/8/10 20:27:26 阅读更多 →
新手必看:Votify配置文件详解,3分钟自定义你的下载偏好

新手必看:Votify配置文件详解,3分钟自定义你的下载偏好

新手必看:Votify配置文件详解,3分钟自定义你的下载偏好 【免费下载链接】votify A command-line app for downloading songs, podcasts and videos from Spotify. 项目地址: https://gitcode.com/gh_mirrors/vo/votify Votify是一款强大的命令行工…

2026/8/10 20:27:26 阅读更多 →

最新新闻

为什么选择Swarm?Unity粒子系统创新方案的7大优势

为什么选择Swarm?Unity粒子系统创新方案的7大优势

为什么选择Swarm?Unity粒子系统创新方案的7大优势 【免费下载链接】Swarm An example of use of compute shaders and procedural instancing. 项目地址: https://gitcode.com/gh_mirrors/swarm5/Swarm Swarm是Unity引擎中一款基于计算着色器和程序化实例化技…

2026/8/10 21:15:43 阅读更多 →
全栈开发从原型到上线的完整闭环:一次故障复盘能留下什么

全栈开发从原型到上线的完整闭环:一次故障复盘能留下什么

全栈开发从原型到上线的完整闭环:一次故障复盘能留下什么说明:本文的全栈交付场景用于梳理检查项,不对应具体线上事件。部署前应在与生产相近的环境执行迁移、兼容性和回滚演练。故障复盘会议室里,气氛沉闷得能拧出水来。投屏上展…

2026/8/10 21:15:43 阅读更多 →
3分钟上手!python-girlfriend-mood情绪分析工具安装与使用教程

3分钟上手!python-girlfriend-mood情绪分析工具安装与使用教程

3分钟上手!python-girlfriend-mood情绪分析工具安装与使用教程 【免费下载链接】python-girlfriend-mood :kissing_closed_eyes: Analyze her mood through her girlfriends words 女朋友聊天时的情绪波动图谱,没女朋友的可自用(雾)。 项目…

2026/8/10 21:15:43 阅读更多 →
Suterusu深度剖析:Linux内核级Rootkit的终极技术揭秘

Suterusu深度剖析:Linux内核级Rootkit的终极技术揭秘

Suterusu深度剖析:Linux内核级Rootkit的终极技术揭秘 【免费下载链接】suterusu An LKM rootkit targeting Linux 2.6/3.x on x86(_64), and ARM 项目地址: https://gitcode.com/gh_mirrors/su/suterusu Suterusu是一款针对Linux 2.6/3.x内核的x86(_64)和ARM…

2026/8/10 21:15:43 阅读更多 →
多智能体协作系统架构设计:从理论到工业级实践

多智能体协作系统架构设计:从理论到工业级实践

多智能体协作系统架构设计:从理论到工业级实践 多智能体系统(Multi-Agent System, MAS)在2026年迎来了从学术概念到工业落地的关键转折。WAIC 2026上,松应科技发布了全球首个多形态机器人协同训练的物理AI操作系统,卡奥…

2026/8/10 21:15:43 阅读更多 →
BigARTM字典与批次管理完全指南:数据预处理到模型训练全流程

BigARTM字典与批次管理完全指南:数据预处理到模型训练全流程

BigARTM字典与批次管理完全指南:数据预处理到模型训练全流程 【免费下载链接】bigartm Fast topic modeling platform 项目地址: https://gitcode.com/gh_mirrors/bi/bigartm BigARTM作为高效的主题建模平台,其字典与批次管理是实现精准主题挖掘的…

2026/8/10 21:14:43 阅读更多 →

日新闻

GraphQL-CSS API全解析:useGqlCSS、GqlCSS组件与getStyles实用指南

GraphQL-CSS API全解析:useGqlCSS、GqlCSS组件与getStyles实用指南

GraphQL-CSS API全解析:useGqlCSS、GqlCSS组件与getStyles实用指南 【免费下载链接】graphql-css A blazing fast CSS-in-GQL™ library. 项目地址: https://gitcode.com/gh_mirrors/gr/graphql-css GraphQL-CSS是一个基于GraphQL的CSS-in-GQL™库&#xff0…

2026/8/10 0:00:02 阅读更多 →
告别语言障碍:KISS Translator 双语翻译插件终极指南

告别语言障碍:KISS Translator 双语翻译插件终极指南

告别语言障碍:KISS Translator 双语翻译插件终极指南 【免费下载链接】kiss-translator A simple, open source bilingual translation extension & Greasemonkey script (一个简约、开源的 双语对照翻译扩展 & 油猴脚本) 项目地址: https://gitcode.com/…

2026/8/10 0:00:02 阅读更多 →
BepInEx配置管理器:游戏插件配置的终极可视化解决方案

BepInEx配置管理器:游戏插件配置的终极可视化解决方案

BepInEx配置管理器:游戏插件配置的终极可视化解决方案 【免费下载链接】BepInEx.ConfigurationManager Plugin configuration manager for BepInEx 项目地址: https://gitcode.com/gh_mirrors/be/BepInEx.ConfigurationManager 你是否曾经因为游戏插件的复杂…

2026/8/10 0:00:02 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/10 1:05:29 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/10 1:05:29 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/10 1:05:29 阅读更多 →

月新闻

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

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

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

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

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

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

2026/8/10 1:05:29 阅读更多 →
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/10 17:07:33 阅读更多 →