React组件通信

news/2024/11/8 5:36:30/

目录

组件通信的意义

结构准备

通过Props通信

父子通信

父传子

子传父

 兄弟组件通信

第三方库的消息订阅与发布

父传子

兄弟传


组件通信的意义


        1) 组件是独立且封闭的单元,默认情况下组件只能使用自己的数据(state)

        2)组件化开发的过程中,完整的功能会拆分多个组件,在这个过程中不可避免的需要互相传递一些数据

        3)为了能让各组件之间可以进行互相沟通,数据传递,这个过程就是组件通信

                1- 父子关系 -  最重要的

                2- 兄弟关系 -  自定义事件模式产生技术方法 eventBus  /  通过共同的父组件通信

                3- 其它关系 -  mobx / redux / zustan

结构准备

首先准备几个组件

头部:

 主要:

 

脚部:

App外壳引入

 

 可以看到整体结构,Header,List,Foot三个组件为并列关系的兄弟组件,

List和Item是包含与被包含的父关系组件,Header,List,Foot和App的父子关系这里不做演示

通过Props通信

父子通信

父传子

首先演示父子组件的通信

在list组件中定义数据进行传递到子组件 

 

 

 

 可以看到子组件Item拿到了父组件List传递的数据

 添加下唯一标识key就不会报上面图片中的错误了

子传父

子组件也可以传递数据到父组件,子组件通过调用父组件定义的回调函数来把子组件的数据传递到父组件中

提前在父组件中定义好回调函数

子组件定义测试数据后通过props调用父组件的回调函数

测试

 

这里子组件被渲染了4次所以会传四次,只做子传父通信演示用

可以看到父组件打印出了子组件传递的参数 

 兄弟组件通信

兄弟间组件通信的话通俗点来说就是可以找一个连接兄弟俩的桥梁,间接地实现兄弟间的组件通信

兄弟组件之前的桥梁很明显就是父组件了

比如A和B是兄弟组件,C是父组件,A和B通信的话,就需要A将数据传递给C,C再讲数据传递给B

A(子)=>C(父)=B(子)

拆分下的话其实还是子传父,父再传子

这里将list组件中的数据传递给header,由header组件将数据打印

 

 

 

第三方库的消息订阅与发布

第三方库有许多 这里以 pubsub-js为例

输入命令安装: npm i pubsub-js

  安装后导入进行使用

import PubSub from 'pubsub-js'

发布消息格式

Pubsub.publish('消息名',数据)

订阅消息格式

PubSub.subscribe('消息名',(message(消息,一般作用不大可以使用_代替),数据)=>{

      })

这种方式可以实现任意组件间的通信 这里只演示父子和兄弟的

父传子

 

 

 不要在意页面的渲染,这里只关注数据的传递

兄弟传

在上面的父组件基础上调整即可,还是list进行发布不用更改,在Header兄弟组件中进行订阅即可

 

 


http://www.ppmy.cn/news/85223.html

相关文章

ChatGPT在语音识别技术领域的应用

第一章:引言 近年来,随着深度学习技术的飞速发展,语音识别技术已经成为了人工智能领域中备受关注的重要领域之一。在语音识别技术的应用中,ChatGPT作为一款先进的语言模型,可以发挥其强大的文本生成和自然语言处理能力…

【ONE·C++ || 哈希(二)】

总言 主要介绍哈希运用于unordered系列的上层封装框架与相关运用:位图、布隆过滤器、哈希切割。 文章目录 总言0、思维导图3、封装3.1、基础封装3.1.1、框架结构3.1.2、Inset 1.0 3.2、引入迭代器3.2.1、在迭代器中3.2.2、在哈希表中3.2.3、在unordered上层3.2.4、…

文本转语音怎么转?教你三招轻松搞定

近年来,人工智能技术飞速发展,语音合成技术 (TTS) 已经被广泛应用于各种应用场景中。在日常生活中,人们经常需要阅读长篇文章、新闻报道、科技论文等,但传统的阅读方式不仅效率低下,而且容易让人感到疲劳。随着语音合成…

day08 Spring MVC

spring MVC相当于Servlet mvc解释:模型,视图,控制器 **使用该思想的作用:**减少耦合性,提高可维护性 Spring MVC前端控制器 方式1 1.在web.xml中配置前端控制器方式2 ​ 要是用前端控制器,必须在web.xml中配置DidpatcherServlet类 <!--前端控制器--> <servlet&g…

14_Uboot图形化配置

目录 U-Boot图形化配置体验 make menuconfig过程分析 Kconfig语法简介 Mainmenu menu/endmenu条目 config条目 depends on和select choice/endchoice Menuconfig Comment Source 添加自定义菜单 U-Boot图形化配置体验 uboot或Linux内核可以通过输入"make menu…

20230522-win11删除文件失败-需要SYSTEM提供的权限

20230522-win11删除文件失败-需要SYSTEM提供的权限 一、软件环境 标签&#xff1a;win11 SYSTEM权限分栏&#xff1a;windows编译器&#xff1a;VS2019 二、问题描述 删除D:\WindowsApps\36186RuoFan.USB_5.8.1.0_x64__q3e6crc0w375t目录下的文件时&#xff0c;提示【文件访…

Qt之程序发布以及打包成exe安装包目录

Qt之程序发布以及打包成exe安装包 目录 一、简述二、设置应用程序图标三、发布程序四、打包程序 回到顶部 一、简述 Qt 项目开发完成之后&#xff0c;需要打包发布程序&#xff0c;而因为用户电脑上没有 Qt 配置环境&#xff0c;所以需要将 release 生成的 exe 文件和所依赖…

通过API接口调用数据的优势是什么?API接口调用展示示例

通过API接口调用数据的优势主要有以下几点&#xff1a; 1.规范化与一致性&#xff1a;API接口提供一种统一的方式来获取数据&#xff0c;保证了数据的规范化与一致性&#xff0c;消除了不同数据源可能带来的格式和结构上的差异。 2.灵活性&#xff1a;使用API接口可以定制请求的…