一、是什么

  通信指的是发送者通过某种媒体 以某种格式来传递信息 到收信者以达到某个目的,广义上,任何信息的传递都是通信

二、如何通信?

组件传递的方式有很多种,根据传送者和接收者可以分为如下:

  • 父组件向子组件传递
  • 子组件向父组件传递
  • 兄弟组件之间的通信
  • 父组件向后代组件传递
  • 非关系组件传递

1、父组件向子组件传递数据

  由于React的数据流动为单向的,父组件向子组件传递是最常见的方式

  父组件在调用子组件的时候,只需在子组件的标签内传递参数,子组件通过props属性就能接收到父组件传递过来的参数

//父组件给子组件数据
//方法=》通过属性方式
function App(){
let money = 100
const changes = ()=>{ }
return(
<div>
父亲
{/* 父组件给子组件数据通过属性方式 */}
{/* 本质 =》元素(组件) =》添加属性
这个属性会被react 底层自动处理成 这个函数的参数 =》{}类型
*/}
<Children money={money} data='5000' change = {changes}></Children>
</div>
)
} //在子组件种通过props 接收
// Children
function Children(props){
console.log(props);  //money={money} data='5000' change = {changes}
     return( <div className="children">Children get father {props.money}</div> ) 
}
export default App

2、子组件向父组件传递数据

  子组件向父组件通信的基本思路是,父组件向子组件传一个函数,然后通过这个函数的回调,拿到子组件传过来的值

//组件的数据传递
//子组件给父组件数据
//解决方法 =》通过自定方法
//本质=》函数的声明和函数调用
//实现 =》
//1 父组件给子组件传递数据数据
// 2在子组件中给父组件数据 function App(){
//1在父组件中声明方法
const getChildren = (value)=>{
console.log('获取到子组件的数据',value);
}
return(
<div>
父亲
{/* 2在把这个方法传递给子组件 */}
<Children getChildren={getChildren}></Children>
</div>
)
} function Children(props){
const getFather =()=>{
//3在子组件中调用父组件申明的方式
props.getChildren(10000)
}
return(
<div className="children"> <button onClick={()=>getFather()}>给父组件数据</button>
</div>
)
}
export default App //总结子组件给父组件数据
// 本质就是函数的声明和调用 //1 在父组件中声明方法
//2 在子组件中调用这个方法

3、兄弟组件之间的通信

  如果是兄弟组件之间的数据传递,则父组件作为中间层来实现数据的互通,通过使用父组件传递

4、父组件向后代组件传递数据

  父组件向后代组件传递数据是一件最普通的事情,就像全局数据一样

  使用useContext提供了组件之间通信的一种方式,可以共享数据,其他数据都能读取对应的数据

React中组件之间是如何通信的 react的组件通信方式有哪些的更多相关文章

  1. Vue父子组件之间的相互通信

    组件是Vue知识体系中最重要的一部分之一,父子组件由于作用域的不同,无法直接对对方的数据进行操作.它们之间的数据传递都是通过中间介质进行的,父组件给子组件传值是通过props属性,而子组件给父组件传值 ...

  2. VUE 自定义组件之间的相互通信

    一.自定义组件 1.全局自定义组件 我们在var vm = new Vue({});的上面并列写上Vue.component('自定义组件名',{组件对象});来完成全局自定义组件的声明.示例代码如下 ...

  3. 六、React 键盘事件 表单事件 事件对象以及React中的ref获取dom节点 、React实现类似Vue的双向数据绑定

    接:https://www.cnblogs.com/chenxi188/p/11782349.html 事件对象 .键盘事件. 表单事件 .ref获取dom节点.React实现类似vue双向数据绑定 ...

  4. 使用reflux进行react组件之间的通信

    前言 组件之间为什么要通信?因为有依赖. 那么,作为React组件,怎么通信? React官网说, 进行 父-子 通信,可以直接pass props. 进行 子-父 通信,往父组件传给子组件的函数注入 ...

  5. React中组件通信的几种方式

    https://segmentfault.com/a/1190000012361461 需要组件之进行通信的几种情况 父组件向子组件通信 子组件向父组件通信 跨级组件通信 没有嵌套关系组件之间的通信 ...

  6. js组件之间的通信

    应用场景: 1.在刷微博的时候,滑到某个头像上,会出现一张usercard(用户名片), 微博列表区有这个usercard, 推荐列表也有这个usercard,评论区也有. 2.在网上购物时,购物车安 ...

  7. 安卓中不同APP之间的消息通信

    昨天在腾讯实习生招聘初试面试时面试官问道我关于两个APP之间相互通信的方式,当时自己回道到了contentProvider与BroadcastReceiver.但他接着问还有没有其它的方式,我跟他说可 ...

  8. react 组件之间传值

    谈及React时,就会想到一个很重要的思想,就是组件化思想.它将可以重用的部分进行组件化开发,形成一个个相对独立的组件,那么组件化后,你也会提出些疑问,组件与组件之间,将怎样进行信息的传递呢?下面来介 ...

  9. VUE 父子组件之间通信传值 props和 $emit

    1.父组件传值给子组件 $props,子组件传值给父组件 $emit 父组件          <div id="app" >               <tr ...

  10. vue单文件组件形成父子(子父)组件之间通信(vue父组件传递数据给子组件,子组件传递数据给父组件)

    看了很多文章,官网文档也有看,对父子组件通信说的不是很明白:决定自己总结一下: vue一般都使用构建工具构建项目:这样每个组件都是单文件组件:而网上很多文章都是script标签方式映入vue,组件通信 ...

随机推荐

  1. java面试题-常用框架

    Spring Spring 是什么 一个开发框架,一个容器,主要由面向切面AOP 和依赖注入DI两个方面,外加一些工具 AOP和IOC AOP 面向切面 AOP是一种编程思想,主要是逻辑分离, 使业务 ...

  2. 2.5:Python常用内置数据结构、多维数组ndarray、Series和DataFrame

    一.Python内置数据结构 1.赋值生成列表 la=[1,2,3,4] la 2.强制转换为列表 lb=list("Hello") lb 3.推导式生成列表 s="ab ...

  3. 【SQL基础】【记住重命名】高级查询:聚合函数(四舍五入)、分组过滤、排序、

    〇.概述 1.功能概述 高级查询:聚合函数(四舍五入).分组过滤.排序. 2.建表语句 drop table if exists user_profile; CREATE TABLE `user_pr ...

  4. 【Java EE】Day09 JavaScript基础

    一.JavaScript简介 二.JavaScript语法 三.JavaScript对象

  5. 【Spark】Day05-内核解析:组件、流程、部署、运行模式、通讯架构、任务调度(Stage、task级)、两种Shuffle机制、内存管理、核心组件

    一.内核概述 内核:核心组件的运行机制.任务调度.内存管理.运行原理 1.核心组件 (1)Driver驱动器节点:执行main方法,将程序转化为作业job,在executor中调度任务task,跟踪并 ...

  6. 【每日一题】2021年12月14日-82. 删除排序链表中的重复元素 II

    存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字. 返回同样按升序排列的结果链表. 来源:力扣(LeetCo ...

  7. day02-功能实现01

    家具网购项目实现01 1.项目开发环境搭建 创建一个web项目,添加需要的jar包(暂不使用Maven) 依照5.1的表格来创建项目的大体分层: 2.功能01-搭建前端页面 2.1需求分析/图解 2. ...

  8. java中的递归机制

    本文主要讲述java中的递归机制. 示例1,递归代码如下: public class Recursion01 { public static void main(String[] args) { T ...

  9. 网络编程 UDP套接字

    第十二章 UDP套接字 12.1 前言 上一章讲述了TCP通信方式,它是基于流的面向连接的网络通信.UDP是IP协议上的另一种传输协议. TCP和UDP都是端到端的通信协议,都处于TCP/IP网络模型 ...

  10. 分享一个项目中在用的图片处理工具类(图片缩放,旋转,画布格式,字节,image,bitmap转换等)

    using System; using System.Collections.Generic; using System.IO; using System.Text; using System.Dra ...