react-组件间的通讯
一、父传子
- 父组件在使用子组件时,提供要传递的数据
- 子组件通过
props接收数据
class Parent extends React.Component {render() {return (<div><div>我是父组件</div><Child name="张" age={16} /></div>)}
}
const Child = props => {return (<div><div>我是子组件</div><div>从父组件接收来的数据: {props.name}-{props.age}</div></div>)
}
二、子传父
- 父组件在使用子组件时,提供一个
回调函数,用于接收数据 - 子组件通过
props调用回调函数,将要传递的数据作为参数传递给回调函数
class Parent extends React.Component {getChildMsg = (msg) => {console.log('从子组件接收来的数据:', msg)}render() {return (<div><div>我是父组件</div><Child getMsg={this.getChildMsg} /></div>)}
}
const Child = props => {handleClick = (msg) => {this.props.getMsg('123abc')}return (<div><div>我是子组件</div><button onClick={this.handleClick}>点我,给父组件传递数据</button></div>)
}
三、无关组件通讯
- 调用
React.createContext()创建 Provider 和 Consumer 两个组件 - 使用
Provider组件作为父节点,设置value属性,表示要传递的数据 - 调用
Consumer组件接受数据
import React from 'react'
const { Provider, Consumer } = React.createContext()class Parent extends React.Component {render() {return (<Provider value="red"><div>我是Parent <Child /></div></Provider>)}
}const Child = props => {return (<div>我是Child<Grandson /></div>)
}const Grandson= props => {return (<div>我是Grandson<Consumer>{data => 我是Parent接收来的数据: {data}}</Consumer></div>)
}export default Parent
四、组件间的通讯demo
- 代码
import React from 'react'
import './index.css'import PropTypes from 'prop-types'/*** 组件间的通信demo*/// 创建context得到提供和消费两个组件,方便无关组件之间的通信
// Provider设置value属性,表示要传递的数据
// Consumer接收数据
const { Provider, Consumer } = React.createContext()class Communication extends React.Component {render() {return (<Provider value="red"><div className="first">我是first<Node name="张" age={16} /></div></Provider>)}
}const Node = props => {return (<div className="second"><div>我是second-Node</div><div>父组件first接收来的数据: {props.name}-{props.age}</div><SubNodegetMsg={msg => {console.log('second-Node接收到子组件third-SubNode数据:', msg)}}/></div>)
}// Node组件 添加props校验
Node.propTypes = {name: PropTypes.string.isRequired, // string类型,必填age: PropTypes.number, // number类型
}// Node组件 添加props默认值
Node.defaultProps = {age: 18,
}const SubNode = props => {return (<div className="third"><div>我是third-SubNode</div><buttononClick={() => {props.getMsg('三儿')}}>点我给父组件second-Node传值</button><Child>我是子节点</Child></div>)
}const Child = props => {return (<div className="fourth"><div>我是fourth-Child</div><Consumer>{data => <span>我是first接收来的数据: {data}</span>}</Consumer><div>组件标签的子节点:{props.children}</div></div>)
}export default Communication
- 效果

- 输出

相关文章:
react-组件间的通讯
一、父传子 父组件在使用子组件时,提供要传递的数据子组件通过props接收数据 class Parent extends React.Component {render() {return (<div><div>我是父组件</div><Child name"张" age{16} /></div>)} }const Child …...
【广州华锐互动】VR公司工厂消防逃生演练带来沉浸式的互动体验
在工业生产过程中,安全问题始终是我们不能忽视的重要环节。特别是火灾事故,不仅会造成重大的经济损失,更会威胁到员工的生命安全。传统的消防安全训练方法,如讲座、实地演练等,虽然具有一定的效果,但是无法…...
可观察性支柱:探索日志、指标和跟踪
通过检查系统输出来测量系统内部状态的能力称为可观察性。当可以仅使用输出信息(即传感器数据)来估计当前状态时,系统就变得“可观察”。您可以使用来自 Observability 的数据来识别和解决问题、优化性能并提高安全性。 在接下来的几节中&am…...
nginx浏览器缓存和上流缓存expires指令_nginx配置HTTPS
1.nginx控制浏览器缓存是针对于静态资源[js,css,图片等] 1.1 expires指令 location /static {alias/home/imooc;#设置浏览器缓存10s过期expires 10s;#设置浏览器缓存时间晚上22:30分过期expires @22h30m;#设置浏览器缓存1小时候过期expires -1h;#设置浏览器不缓存expires …...
硬件安全与机器学习的结合
文章目录 1. A HT Detection and Diagnosis Method for Gate-level Netlists based on Machine Learning摘要Introduction 2. 基于多维结构特征的硬件木马检测技术摘要Instruction 3. A Hardware Trojan Detection and Diagnosis Method for Gate-Level Netlists Based on Diff…...
腾讯云国际-如何使用对象存储COS在 CKafka 控制台创建数据异步拉取任务?腾讯云代充
操作场景 Datahub 支持接入各种数据源产生的不同类型的数据,统一管理,再分发给下游的离线/在线处理平台,构建清晰的数据通道。 本文以 COS 数据为例介绍如何在 CKafka 控制台创建数据异步拉取任务,并对任务进行修改配置…...
内存马概念
内存马概念 文章目录 内存马概念木马演变内存使用条件内存缺点JAVA Web三大组件Listener:监听器servelet请求流程内存马分类内存演示内存马植入方式案例shiro反序列化漏洞植入内存马 木马演变 内存使用条件 1. 禁止外联 2. 文件监控、查杀 3. spring Boot,不支持js…...
交换机基础(四):MSTP负载均衡配置案例
如图所示是某个企业内部核心网络的结构图,目前企业中有20个VLAN, 编号为VLAN1~VLAN20, 为了确保内部网络的可靠性,使用 了冗余链路和MSTP 协议。为了能更好地利用网络资源和带宽,现管理员希望通过配置MSTP 的负载均衡实现网络带宽…...
C# OpenCvSharp Yolov8 Face Landmarks 人脸特征检测
效果 项目 代码 using OpenCvSharp; using OpenCvSharp.Dnn; using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;namespace OpenCvSharp_Yolov8_Demo {public partial class frmMain…...
计算机网络之数据链路层(全)
[复习提示] 王道:本章是历年考试中考查的重点。要求在了解数据链路层基本概念和功能的基础上,重点掌握滑动窗口机制、三种可靠传输协议、各种MAC协议、HDLC协议和PPP协议,特别是CSMA/CD协议和以太网帧格式,以及局域网的争用期和最…...
前端TypeScript学习-交叉类型与泛型
交叉类型和泛型是TypeScript中的两个重要概念。 交叉类型(&)可以用来组合多个接口,形成一个新接口。它类似于接口继承(extends),但有一些区别。交叉类型不会产生类型继承层次结构,而是将多…...
科聪协作(复合)移动机器人整体解决方案
协作(复合)移动机器人(AGV/AMR)相较传统工业机器人具有更加安全和简单的工作优势,具备较强的发展潜力。协作(复合)移动机器人安全性和操作的简洁性、灵活性不断提高,优势得到了充分发挥,在越来越…...
RTE(Runtime Environment)
RTE(Runtime Environment)是一个运行时环境,在这个环境里,你可以实现的功能是: 作为一个缓冲buffer给应用层和BSW层的接口(例如COM)用来存储数据,也就是说定义一个全局变量供上层和下…...
搭建自己的搜索引擎——oh-my-search使用
搭建自己的搜索引擎——oh-my-search使用 使用elasticsearch和search-ui搭建自己的搜索引擎,快速查找资源和文件。如果对代码感兴趣,相关代码已在github上开源,欢迎fork代码。 搭建elasticsearch 先搭建eleasticsearch再搭建kibana 搭建e…...
微信小程序实现文章内容详情
方案一、使用微信小程序官方提供的webview 前提已经在微信公众平台开发管理配置好了安全域名即: 方案二、把网页转成pdf直接展示 前提已经在微信公众平台开发管理配置好了安全域名即: 实现思路是发起网络请求拿到pdf下载地址,然后wx.download…...
行情分析——加密货币市场大盘走势(10.27)
目前大饼开始了震荡盘整,目前远离EMA21均线,预计会有大的回调动作。而MACD日线来看,昨日和今日开始呈现绿色空心柱,也在说明大饼在做震荡盘整。不排除大跌的可能性,大饼可以开始布局中长线空单,可以再35000…...
设计模式:桥接模式(C#、JAVA、JavaScript、C++、Python、Go、PHP)
上一篇《适配器模式》 下一篇《装饰器模式》 简介: 桥接模式,它是一种结构型设计模式,它的主要目的是将抽象部分与具体实现部分分离,使它们都可以独立地变化。…...
error: the following arguments are required: --model, --data 解决方法
错误原因:Windows下需要缺乏配置参数,需要进行相关参数配置。 解决办法:在Pycharm的编辑设置,加上–model--model ****,其中****为指定的模型名称,按照自己实际报错进行添加,比如我这里要跑的模型为bert&am…...
Kafka - 消息队列的两种模式
文章目录 消息队列的两种模式点对点模式(Point-to-Point,P2P)发布/订阅模式(Publish/Subscribe,Pub/Sub) 小结 消息队列的两种模式 消息队列确实可以根据消息传递的模式分为 点对点模式发布/订阅模式 这两…...
【Go】格式化字符串指令大全 Redis常用命令
【Go】格式化字符串指令大全 && Redis常用命令 原创:As.Kai 博客地址:https://blog.csdn.net/qq_42362997 如果以下内容对您有帮助,点赞点赞点赞~ 目录 格式化格式化字符串指令大全%s 用于插入字符串%d 用于插入整数%f 用于插入浮点数…...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
React---day11
14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...
Golang——9、反射和文件操作
反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…...
Sklearn 机器学习 缺失值处理 获取填充失值的统计值
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 使用 Scikit-learn 处理缺失值并提取填充统计信息的完整指南 在机器学习项目中,数据清…...
ThreadLocal 源码
ThreadLocal 源码 此类提供线程局部变量。这些变量不同于它们的普通对应物,因为每个访问一个线程局部变量的线程(通过其 get 或 set 方法)都有自己独立初始化的变量副本。ThreadLocal 实例通常是类中的私有静态字段,这些类希望将…...
算法250609 高精度
加法 #include<stdio.h> #include<iostream> #include<string.h> #include<math.h> #include<algorithm> using namespace std; char input1[205]; char input2[205]; int main(){while(scanf("%s%s",input1,input2)!EOF){int a[205]…...
