组件通信: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/10/17 5:44:58 阅读更多 →
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/10/18 1:57:41 阅读更多 →
新手必看: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/10/16 15:51:35 阅读更多 →

最新新闻

1 个工具搞定 Godot 逆向解包:gdsdecomp 项目恢复与 GDScript 反编译实战

1 个工具搞定 Godot 逆向解包:gdsdecomp 项目恢复与 GDScript 反编译实战

1 个工具搞定 Godot 逆向解包:gdsdecomp 项目恢复与 GDScript 反编译实战 【免费下载链接】gdsdecomp Godot reverse engineering tools 项目地址: https://gitcode.com/GitHub_Trending/gd/gdsdecomp gdsdecomp(Godot RE Tools)是一款…

2026/10/18 1:56:52 阅读更多 →
如何5分钟自托管一个免费付费墙突破服务:13ft Ladder 完整指南

如何5分钟自托管一个免费付费墙突破服务:13ft Ladder 完整指南

如何5分钟自托管一个免费付费墙突破服务:13ft Ladder 完整指南 【免费下载链接】13ft My own custom 12ft.io replacement 项目地址: https://gitcode.com/GitHub_Trending/13/13ft 13ft Ladder 是一款完全免费、可自托管的付费墙突破工具:它运行…

2026/10/18 1:56:52 阅读更多 →
1.Agent 实战开发环境安装及使用

1.Agent 实战开发环境安装及使用

一.本节学习目标 1.Python安装使用 2.Pycharm安装使用 3.pip安装使用 4.Miniconda安装使用 5.安装uv 6.PgVector向量数据库的安装 7.VSCODE,Node.JS下载 二.课程目录 1.开发环境搭建 2.智能写作助手系统介绍 3.智能写作助手系统前端Vue搭建 4.智能写作助手系统后端FastAPI搭建…

2026/10/18 1:56:52 阅读更多 →
Folia 安装教程:三种路线装好全屏歌词播放器

Folia 安装教程:三种路线装好全屏歌词播放器

Folia 安装教程:三种路线装好全屏歌词播放器 【免费下载链接】folia-major 专注于绚丽的歌词动画效果的本地音乐/navidrome/第三方多平台在线音乐播放器 项目地址: https://gitcode.com/GitHub_Trending/fo/folia-major Folia 是一款把歌词渲染成全屏动画的播…

2026/10/18 1:56:52 阅读更多 →
Unity WebGL移动端全屏横屏适配:原生JS桥接方案与避坑指南

Unity WebGL移动端全屏横屏适配:原生JS桥接方案与避坑指南

简介:这份资源是面向Unity开发者的WebGL多平台全屏横屏适配Demo,针对Unity项目打包为WebGL后在Windows浏览器、Android与iOS移动设备上无法自动全屏、屏幕方向不受控的常见痛点,提供可运行的参考实现。包内共145个文件,以65个meta…

2026/10/18 1:56:52 阅读更多 →
具身智能中的协同机理研究(141):TVA与VLA协同提升装配精度关键机制

具身智能中的协同机理研究(141):TVA与VLA协同提升装配精度关键机制

前沿技术探索:TVA智能体(简称TVA) TVA智能体(亦称“AI智能体视觉”)是依托Transformer架构与“因式智能体”理论构建的新型工业视觉系统,也是当前最具代表性的具身视觉技术之一。它有机融合深度强化学习&a…

2026/10/18 1:55:52 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →