一、是什么

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

二、如何通信?

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

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

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. vue 3.0 常用API 的介绍

    vue3.0 生命周期 写法一 和vue2.x 一致 区别在于(beforeUnmount.unmount)名称不一样 写法二 在setup 中使用, 需要引用 如: import { onBefor ...

  2. ADPCM(自适应差分脉冲编码调制)的原理和计算

    关于ADPCM ADPCM(Adaptive Differential Pulse Code Modulation, 自适应差分脉冲编码调制) 是一种音频信号数字化编码技术, 音频压缩标准G.722, ...

  3. Aspose.Cells设置单元格背景色不生效

    Style.BackgroundColor property 获取或设置样式的背景颜色.public Color BackgroundColor { get; set; } 评论 如果要设置单元格的颜 ...

  4. springMVC环境的搭建(一)

    概要: MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller). MV ...

  5. js day04 实参与形参个数不一致

    // function fn(x, y) {         //     // x = 1         //     // y = undefined         //     // 1 + ...

  6. 5:Echarts数据可视化-多条曲线、多个子图、TreeMap类似盒图、树形图、热力图、词云

    〇.目标 本次实验主要基于Echarts的Python库实现高维数据.网络和层次化数据.时空数据和文本数据的可视化,掌握可视化的操作流程和相关库的使用. 一.绘制平行坐标系 平行坐标是信息可视化的一种 ...

  7. 【算法总结】【队列均LinkedList】栈和队列、双端队列的使用及案例

    1.栈 初始化:Stack<E> stack = new Stack<>(); 出栈:stack.pop() 或 stack.remove(stack.size() - 1) ...

  8. 【Shell脚本案例】案例1:服务器系统配置初始化

    〇.目录 一.背景 新购买10台服务器,并安装Linux系统 目的:对操作系统进行配置的初始化 二.需求 1.设置时区并同步时间 2.禁用selinux安全机制 3.关闭防火墙(清空防火墙的默认策略, ...

  9. Leanote蚂蚁笔记-私人云笔记服务器搭建

    title: Leanote蚂蚁笔记-私人云笔记服务器搭建 date: 2020-02-22 21:53:24 categories: - [IT,技术] - [IT,软件,程序] - [IT,软件, ...

  10. 三个小任务掌握List、Set、Map

    任务一: ArrayList.Vector 和 LinkedList 都实现了 List 接口,对它们分别进行如下操作后比 较它们的不同,然后形成初步耗时报告(三种不同 List 的耗时): 追加元素 ...