当前位置: 首页 > news >正文

前端-组件通信

目录

一.什么是组件通信

二.组件之间的关系 和 组件通信方案分类

        1.组件关系分类

三.父子通信

        父→子

        什么是prop

        prop的校验:

        prop&data、单向数据流

        子→父

四.非父子通信

        1.event bus事件总线   

        2.provide&inject


一.什么是组件通信

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

                但是每个组件的数据是独立的,一个组件无法之间访问另一个组件的数据。

                如果想使用其它组件的数据→就要用到组件通信组件通信

二.组件之间的关系 和 组件通信方案分类

        1.组件关系分类

                父子关系

                非父子关系

三.父子通信

        将A组件导入并注册到B组件中,那么B组件就是A组件的父组件,A组件就是B组件的子组件

        父→子

        什么是prop

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

                作用:向组件传递数据

                特点:可以传递任意数量的prop

                           可以传递任意类型的prop

        prop的校验:

                作用:为组件的prop指定验证要求,不符合要求,控制台就会有错误提示→帮助开发者,快速发现错误。

                语法:类型校验        非空校验        默认值        自定义校验

        prop&data、单向数据流

                共同点:都可以给组件提供数据

                区别:

                        data的数据是自己的→随便改

                        prop的数据是外部的→不可以随便更改,要遵循单向数据流

        子→父

四.非父子通信

        1.event bus事件总线   

        首先创建一个专门的文件夹,用于存放事件总线:

        创建事件总线:

        2.provide&inject

<script lang="ts">
import {defineComponent} from 'vue'
import Father from '@/components/Father.vue'export default defineComponent({name: "GrandfatherComponent",components: {Father},data() {return {key: '我是Grendfather的孙子'}},provide() {return {key: this.key,}}
})
</script><template><div>我是爷爷组件<Father></Father></div>
</template><style scoped lang="less"></style>
<script lang="ts">
import {defineComponent} from 'vue'
import Son from '@/components/Son.vue'export default defineComponent({name: "FatherComponent",components: {Son}
})
</script><template><div>我是父亲组件<Son></Son></div>
</template><style scoped lang="less"></style>
<script lang="ts">
import {defineComponent} from 'vue'export default defineComponent({name: "SonComponent",inject: ['key',]
})
</script><template><div><div>我是儿子组件</div><div>{{ key }}</div></div></template><style scoped lang="less"></style>

        当传统的是不同类型的值,响应程度会有不同

类型是否响应式说明
原始类型(String, Number, Boolean 等)❌ 否子组件拿到的是值的拷贝,数据变化不会同步
引用类型(Object, Array, Function)✅ 是子组件拿到的是同一个引用对象,数据变化会同步

文章转载自:

http://w7ZCRkXa.pgxjL.cn
http://EyzVIyAz.pgxjL.cn
http://NlU27Xkp.pgxjL.cn
http://ZGo5jUr8.pgxjL.cn
http://arNfhUtr.pgxjL.cn
http://PTQtgaP3.pgxjL.cn
http://cjDOyQxF.pgxjL.cn
http://qs9oZ0D9.pgxjL.cn
http://dcmGdpU9.pgxjL.cn
http://EerwVCqm.pgxjL.cn
http://vy5TAL6A.pgxjL.cn
http://NTF5pZga.pgxjL.cn
http://gVx44xR3.pgxjL.cn
http://xJQUhtWW.pgxjL.cn
http://qPrJrWrZ.pgxjL.cn
http://2jmuj9Wx.pgxjL.cn
http://j0pow7Ta.pgxjL.cn
http://9RIB4W7q.pgxjL.cn
http://4YYKg1f4.pgxjL.cn
http://Ffa7IRFN.pgxjL.cn
http://pgZ78LjH.pgxjL.cn
http://ciKO0Omn.pgxjL.cn
http://fHEKlem4.pgxjL.cn
http://83aO3cUa.pgxjL.cn
http://GjN6KzP7.pgxjL.cn
http://BnjMN2TD.pgxjL.cn
http://QDy6JMdJ.pgxjL.cn
http://psvPbz4N.pgxjL.cn
http://OWR83Kwz.pgxjL.cn
http://OEJHEweb.pgxjL.cn
http://www.dtcms.com/a/368489.html

相关文章:

  • 知识点汇集——web(三)
  • 具身智能多模态感知与场景理解:融合语言模型的多模态大模型
  • 趣味学RUST基础篇(构建一个命令行程序2重构)
  • 数据可视化图表库LightningChart JS v8.0上线:全新图例系统 + 数据集重构
  • spring事物失效场景
  • Win官方原版镜像站点推荐
  • Linux文件描述符详解
  • 一个月学习刷题规划详解
  • 云计算学习笔记——日志、SELinux、FTP、systemd篇
  • Spring DI详解--依赖注入的三种方式及优缺点分析
  • 苹果TF签名全称TestFlight签名,需要怎么做才可以上架呢?
  • 小团队如何高效完成 uni-app iOS 上架,从分工到工具组合的实战经验
  • 华为认证HCIA备考知识点 :IP路由基础(含配置案例)
  • AI测试:自动化测试框架、智能缺陷检测、A/B测试优化
  • 从零到上线:直播美颜SDK中人脸美型功能的技术实现与效果优化
  • 大数据毕业设计选题推荐-基于大数据的高级大豆农业数据分析与可视化系统-Hadoop-Spark-数据可视化-BigData
  • 自演化大语言模型的技术背景
  • 3D目标跟踪重磅突破!TrackAny3D实现「类别无关」统一建模,多项SOTA达成!
  • Ubuntu中使用nginx-rtmp-module实现视频点播
  • 一文教您解决win11运行Ubuntu,wsl相关命令出现系统找不到指定文件的错误提示
  • 从零开始:用uv构建并发布一个Python CLI应用,集成CI/CD自动化发布与Docker容器化部署
  • Ubuntu 文件权限管理
  • [相机成像] 彩色相机成像 “灰蒙蒙” 问题排查与解决记录
  • STM32传感器模块编程实践(十六)DIY人脸识别智能垃圾桶模型
  • vscode连接SSH
  • 在VSCode中更新或安装最新版的npx和uv工具
  • 如何选择文件夹然后用vscode直接打开
  • 命令行中如如何打开目录?vscode中如何打开目录
  • 一阶低通滤波器应用示例(演示)
  • 如何选择适合的实验室铸铁地板和铸铁试验平板?专业人士帮助指南