React中组件之间是如何通信的 react的组件通信方式有哪些
一、是什么
通信指的是发送者通过某种媒体 以某种格式来传递信息 到收信者以达到某个目的,广义上,任何信息的传递都是通信
二、如何通信?
组件传递的方式有很多种,根据传送者和接收者可以分为如下:
- 父组件向子组件传递
- 子组件向父组件传递
- 兄弟组件之间的通信
- 父组件向后代组件传递
- 非关系组件传递
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的组件通信方式有哪些的更多相关文章
- Vue父子组件之间的相互通信
组件是Vue知识体系中最重要的一部分之一,父子组件由于作用域的不同,无法直接对对方的数据进行操作.它们之间的数据传递都是通过中间介质进行的,父组件给子组件传值是通过props属性,而子组件给父组件传值 ...
- VUE 自定义组件之间的相互通信
一.自定义组件 1.全局自定义组件 我们在var vm = new Vue({});的上面并列写上Vue.component('自定义组件名',{组件对象});来完成全局自定义组件的声明.示例代码如下 ...
- 六、React 键盘事件 表单事件 事件对象以及React中的ref获取dom节点 、React实现类似Vue的双向数据绑定
接:https://www.cnblogs.com/chenxi188/p/11782349.html 事件对象 .键盘事件. 表单事件 .ref获取dom节点.React实现类似vue双向数据绑定 ...
- 使用reflux进行react组件之间的通信
前言 组件之间为什么要通信?因为有依赖. 那么,作为React组件,怎么通信? React官网说, 进行 父-子 通信,可以直接pass props. 进行 子-父 通信,往父组件传给子组件的函数注入 ...
- React中组件通信的几种方式
https://segmentfault.com/a/1190000012361461 需要组件之进行通信的几种情况 父组件向子组件通信 子组件向父组件通信 跨级组件通信 没有嵌套关系组件之间的通信 ...
- js组件之间的通信
应用场景: 1.在刷微博的时候,滑到某个头像上,会出现一张usercard(用户名片), 微博列表区有这个usercard, 推荐列表也有这个usercard,评论区也有. 2.在网上购物时,购物车安 ...
- 安卓中不同APP之间的消息通信
昨天在腾讯实习生招聘初试面试时面试官问道我关于两个APP之间相互通信的方式,当时自己回道到了contentProvider与BroadcastReceiver.但他接着问还有没有其它的方式,我跟他说可 ...
- react 组件之间传值
谈及React时,就会想到一个很重要的思想,就是组件化思想.它将可以重用的部分进行组件化开发,形成一个个相对独立的组件,那么组件化后,你也会提出些疑问,组件与组件之间,将怎样进行信息的传递呢?下面来介 ...
- VUE 父子组件之间通信传值 props和 $emit
1.父组件传值给子组件 $props,子组件传值给父组件 $emit 父组件 <div id="app" > <tr ...
- vue单文件组件形成父子(子父)组件之间通信(vue父组件传递数据给子组件,子组件传递数据给父组件)
看了很多文章,官网文档也有看,对父子组件通信说的不是很明白:决定自己总结一下: vue一般都使用构建工具构建项目:这样每个组件都是单文件组件:而网上很多文章都是script标签方式映入vue,组件通信 ...
随机推荐
- vue 3.0 常用API 的介绍
vue3.0 生命周期 写法一 和vue2.x 一致 区别在于(beforeUnmount.unmount)名称不一样 写法二 在setup 中使用, 需要引用 如: import { onBefor ...
- ADPCM(自适应差分脉冲编码调制)的原理和计算
关于ADPCM ADPCM(Adaptive Differential Pulse Code Modulation, 自适应差分脉冲编码调制) 是一种音频信号数字化编码技术, 音频压缩标准G.722, ...
- Aspose.Cells设置单元格背景色不生效
Style.BackgroundColor property 获取或设置样式的背景颜色.public Color BackgroundColor { get; set; } 评论 如果要设置单元格的颜 ...
- springMVC环境的搭建(一)
概要: MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller). MV ...
- js day04 实参与形参个数不一致
// function fn(x, y) { // // x = 1 // // y = undefined // // 1 + ...
- 5:Echarts数据可视化-多条曲线、多个子图、TreeMap类似盒图、树形图、热力图、词云
〇.目标 本次实验主要基于Echarts的Python库实现高维数据.网络和层次化数据.时空数据和文本数据的可视化,掌握可视化的操作流程和相关库的使用. 一.绘制平行坐标系 平行坐标是信息可视化的一种 ...
- 【算法总结】【队列均LinkedList】栈和队列、双端队列的使用及案例
1.栈 初始化:Stack<E> stack = new Stack<>(); 出栈:stack.pop() 或 stack.remove(stack.size() - 1) ...
- 【Shell脚本案例】案例1:服务器系统配置初始化
〇.目录 一.背景 新购买10台服务器,并安装Linux系统 目的:对操作系统进行配置的初始化 二.需求 1.设置时区并同步时间 2.禁用selinux安全机制 3.关闭防火墙(清空防火墙的默认策略, ...
- Leanote蚂蚁笔记-私人云笔记服务器搭建
title: Leanote蚂蚁笔记-私人云笔记服务器搭建 date: 2020-02-22 21:53:24 categories: - [IT,技术] - [IT,软件,程序] - [IT,软件, ...
- 三个小任务掌握List、Set、Map
任务一: ArrayList.Vector 和 LinkedList 都实现了 List 接口,对它们分别进行如下操作后比 较它们的不同,然后形成初步耗时报告(三种不同 List 的耗时): 追加元素 ...