了解 Vue 工程化开发中的组件通信

news2024/9/24 7:14:33

目录

1. 组件通信语法

1.1. 什么是组件通信?

1.2. 为什么要使用组件通信?

1.3. 组件之间有哪些关系(组件关系分类)?

1.4. 组件通信方案有哪几类 ?

2. 父子通信流程图

3. 父传子

3.1. 父传子核心流程props

4. 子传父

4.1. 子传父核心流程$emit

5. prop 介绍

5.1. prop 定义

5.2. prop 作用

5.3. prop 特点

5.4. prop 练习

6. props 校验

6.1. 问题引入(思考)

6.2. props 校验的作用

6.3. props 校验的语法

7. prop 与 data,单向数据流

7.1. prop 与 data的共同点

7.2. prop 与 data的区别

7.3. 单向数据流介绍

7.4. 口诀

8. 非父子 (拓展)-event bus 事件总线

8.1. event bus 事件总线的作用

8.2. event bus 事件总线的步骤

9. 非父子 (拓展)-provide 与 inject

9.1. provide 与 inject 的作用

9.2. provide 与 inject 的步骤


 

1. 组件通信语法

1.1. 什么是组件通信?

  • 组件通信, 就是指 组件与组件 之间的数据传递

1.2. 为什么要使用组件通信?

  • 组件的数据是独立的,无法直接访问其他组件的数据
  • 想用其他组件的数据,就需要组件通信

1.3. 组件之间有哪些关系(组件关系分类)?

  • 父子关系
  • 非父子关系

1.4. 组件通信方案有哪几类 ?

 

2. 父子通信流程图

  • 父组件通过 props 将数据传递给子组件
  • 子组件利用 $emit 通知父组件修改更新

3. 父传子

父组件通过 props 将数据传递给子组件

3.1. 父传子核心流程props

  • 父组件中给子组件添加属性传值
  • 子组件props 接收
  • 子组件使用

 

4. 子传父

子组件利用 $emit 通知父组件,进行修改更新

4.1. 子传父核心流程$emit

  • 子组件$emit 发送消息
  • 父组件中给子组件添加消息监听
  • 父组件中实现处理函数

 

5. prop 介绍

5.1. prop 定义

  • 组件上 注册的一些 自定义属性

5.2. prop 作用

  • 向子组件传递数据

5.3. prop 特点

  • 可以 传递 任意数量 的prop
  • 可以 传递 任意类型 的prop

5.4. prop 练习

 

6. props 校验

6.1. 问题引入(思考)

  • 组件的 prop 可以乱传吗?

6.2. props 校验的作用

  • 为组件的 prop 指定验证要求,不符合要求,控制台就会有错误提示

目的:帮助开发者,快速发现错误

6.3. props 校验的语法

  • 类型校验
  • 非空校验
  • 默认值
  • 自定义校验

类型校验的语法

Props 校验的完整语法

 

7. prop 与 data,单向数据流

7.1. prop 与 data的共同点

  • 都可以给组件提供数据

7.2. prop 与 data的区别

  • data 的数据是自己的,可以随便改
  • prop 的数据是外部的,不能直接改,要遵循 单向数据流

7.3. 单向数据流介绍

  • 父级 prop 的数据更新,会向下流动,影响子组件

这个数据流动是单向的

7.4. 口诀

  • 谁的数据谁负责

 

8. 非父子 (拓展)-event bus 事件总线

8.1. event bus 事件总线的作用

  • 非父子组件之间,进行简易消息传递

复杂场景 → Vuex

8.2. event bus 事件总线的步骤

  • 创建一个都能访问到的事件总线 (空 Vue 实例) → utils/EventBus.js

  • A 组件(接收方),监听 Bus 实例的事件

  • B 组件(发送方),触发 Bus 实例的事件

 

9. 非父子 (拓展)-provide 与 inject

9.1. provide 与 inject 的作用

  • 跨层级共享数据

9.2. provide 与 inject 的步骤

  • 父组件 provide 提供数据

  • 子/孙组件 inject 取值使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1596109.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++成长记】C++入门 | 类和对象(中) |类的6个默认成员函数、构造函数、析构函数

🐌博主主页:🐌​倔强的大蜗牛🐌​ 📚专栏分类:C❤️感谢大家点赞👍收藏⭐评论✍️ 目录 一、类的6个默认成员函数 二、构造函数 1、概念 2、特性 三、析构函数 1、概念 2、特性 一、…

LabVIEW专栏六、LabVIEW项目

一、梗概 项目:后缀是.lvproj,在实际开发的过程中,一般是要用LabVIEW中的项目来管理代码,也就是说相关的VI或者外部文件,都要放在项目中来管理。 在LabVIEW项目中,是一个互相依赖的整体,可以包…

51-40 Align your Latents,基于LDM的高分辨率视频生成

由于数据工程、仿真测试工程,咱们不得不进入AIGC图片视频生成领域。兜兜转转,这一篇与智驾场景特别密切。23年4月,英伟达Nvidia联合几所大学发布了带文本条件融合、时空注意力的Video Latent Diffusion Models。提出一种基于LDM的高分辨率视…

【简单讲解如何安装与配置Composer】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

深入探索:Zookeeper+消息队列(kafka)集群

目录 前言 一、Zookeeper概述 1、Zookeeper概念 2、Zookeeper 特点 3、Zookeeper工作机制 4、Zookeeper 选举机制 4.1 第一次启动选举机制 4.2 非第一次启动选举机制 5、Zookeeper 数据结构 6、Zookeeper 应用场景 二、部署 Zookeeper 集群 1、环境部署 2、安装 z…

构建鸿蒙ACE静态库

搭建开发环境 根据说明文档下载鸿蒙全部代码,一般采取第四种方式获取最新代码(请保证代码为最新) 源码获取Windows下载编译环境 MinGW GCC 7.3.0版本 请添加环境变量IDE 可以使用两种 CLion和Qt,CLion不带有环境需要安装MinGW才可以开发,Qt自带MinGW环境&#xff0…

【Canvas与艺术】绘制磨砂黄铜材质Premium Quality徽章

【关键点】 渐变色的使用、斜纹的实现、底图的寻觅 【成果图】 ​​​​​​​ 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><tit…

跑腿平台隐藏服务用法,搭建平台这些跑腿服务也能做!

跑腿场景竞争愈发激烈激烈 事实上&#xff0c;跑腿行业早已群狼环伺&#xff0c;尽管跑腿领域仍有很大的发展空间&#xff0c;但新晋玩家都普遍把目光投向了外卖配送这个细分领域&#xff0c;难免会增加后来者的市场拓展和发展难度。那么&#xff0c;在跑腿服务行业中还有哪些…

springboot上传模块到私服,再用pom引用下来

有时候要做一个公司的公共服务模块。不能说大家都直接把代码粘贴进去&#xff0c;因为会需要维护很多份&#xff1b;这样就剩下两个方式了。 方式一&#xff1a;自己独立部署一个公共服务的服务&#xff0c;全公司都调用&#xff0c;通过http、rpc或者grpc的方式&#xff0c;这…

Http响应报文介绍

所有HTTP消息(请求与响应)中都包含&#xff1a; 一个或几个单行显示的消息头(header)&#xff0c; 在消息头部分主要包含&#xff1a;响应行信息和响应头信息 一个强制空白行&#xff1b; 最后是响应消息主体&#xff1b; 以下是一个典型的HTTP响应: HTTP/1.1 200 OK -- 响…

【MATLAB源码-第15期】基于matlab的MSK的理论误码率与实际误码率BER对比仿真,采用差分编码IQ调制解调。

1、算法描述 在数字调制中&#xff0c;最小频移键控&#xff08;Minimum-Shift Keying&#xff0c;缩写&#xff1a;MSK&#xff09;是一种连续相位调制的频移键控方式&#xff0c;在1950年代末和1960年代产生。[1] 与偏移四相相移键控&#xff08;OQPSK&#xff09;类似&…

nodejs解析url参数

需要引入 url 模块&#xff1b; var http require(http); var url require(url);http.createServer(function (req, res) {res.writeHead(200, {Content-Type: text/plain});// 解析 url 参数var params url.parse(req.url, true).query;res.write("name: " par…

解决Git 不相关的分支合并

可以直接调到解决方案,接下来是原因分析和每步的解决方式 问题原因: 我之前在自己本机创建了一个初始化了Git仓库,后来有在另一个电脑初始化仓库,并没有clone自己在本机Git远程仓库地址,导致Git历史版本不相关 错误信息 From https://gitee.com/to-uphold-justice-for-other…

MES管理系统中生产物料管理的设计

在数字化工厂建设的浪潮中&#xff0c;MES管理系统作为执行层的核心管理系统&#xff0c;其重要性日益凸显。特别是在生产物料管理方面&#xff0c;MES管理系统不仅承担物料计划指令的接收&#xff0c;还负责物料派工及使用反馈的数据收集&#xff0c;其业务流程的设计对数字化…

【Leetcode】2923. 找到冠军 I

文章目录 题目思路代码复杂度分析时间复杂度空间复杂度 结果总结 题目 题目链接&#x1f517; 一场比赛中共有 n n n 支队伍&#xff0c;按从 0 0 0 到 n − 1 n - 1 n−1 编号。 给你一个下标从 0 0 0 开始、大小为 n ∗ n n * n n∗n 的二维布尔矩阵 g r i d grid gr…

改进的注意力机制的yolov8和UCMCTrackerDeepSort的多目标跟踪系统

基于yolov8和UCMCTracker/DeepSort的注意力机制多目标跟踪系统 本项目是一个强大的多目标跟踪系统&#xff0c;基于[yolov8]链接和[UCMCTracker/DeepSot]/链接构建。 &#x1f3af; 功能 多目标跟踪&#xff1a;可以实现对视频中的多目标进行跟踪。目标检测&#xff1a;可以实…

Linux系统搭建FastDFS文件服务结合内网穿透实现公网访问本地文件

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【Tars-go】腾讯微服务框架学习使用01--初始化服务

1 初始INIT-Demo运行 按照官网描述 go get 安装框架依赖 # < go 1.16 go get -u github.com/TarsCloud/TarsGo/tars/tools/tarsgo go get -u github.com/TarsCloud/TarsGo/tars/tools/tars2go # > go 1.16 go install github.com/TarsCloud/TarsGo/tars/tools/tarsgolat…

常见Spring相关工具报错-源码分析

常见Spring相关工具报错-源码分析 1. Resouce Bundle 国际化 yml 配置不生效 1. Resouce Bundle 国际化 yml 配置不生效 1️⃣ 配置yml 2️⃣ 报错信息 2024-04-15 15:13:57.828 [http-nio-8090-exec-1] WARN o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver - [doResolveHan…