组件通信之pubsub

pubsub

释:消息订阅与发布
点击进入gitee

消息订阅与发布机制

1,先订阅,在发布
2,使用于任意组件间通信
3,要在组件的componentWillUnmount中取消订阅

作用

使用于任意组件间通信

安装

yarn add pubsub-js

引入(每个组件使用时都需要)

使用es6引入:import PubSub from 'pubsub-js;
使用CommonJS:const PubSub = require('pubsub-js');

语法

发布

//异步发布主题
PubSub.publish('主题','内容'//同步发布主题,这在某些环境中更快
//但是当一个主题在相同的执行链,小心使用
PubSub.publishSync('主题','内容'

订阅

// token:保留返回的令牌,以便能够取消订阅
token = PubSub.subscribe('主题',(titleName,data)=>{//titleName 主题名称//data 返还的数据
})

取消订阅

一般在componentWillUnmount中取消订阅

//取消单个订阅,放入令牌即可
PubSub.unsubscribe(token);
//取消函数的所有订阅(这里说的函数就是PubSub.subscribe的第二个参数——回调函数)
PubSub.unsubscribe(fnName);
//清除所有订阅
PubSub.clearAllSubscriptions();

react做的一个小例子

场景:组件a和组件b之间的通信,兄弟关系

//组件a
class A extends Component{state = {obj:{},}componentDidMount() {//订阅this.token = PubSub.subscribe('TEXT', (msg, data) => {this.setState({obj:data})});}componentWillUnmount(){//取消订阅PubSub.unsubscribe(this.token)}render(){let {obj:{text}}=this.statereturn(<div>{`这里时接收到的内容——————`${text}}</div>)}
}
//组件b
class B extends Component{state={obj:{text:''}}onSettext(e){let value = e.target.value;let { obj } = this.state;obj.text = value;this.setState({ obj })// 发送PubSub.publish('TEXT', this.state.obj);}render(){return(<input type="text" onChange={(e)=>{this.onSettext(e)}>)}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/511032.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis消息队列发展历程

简介&#xff1a;Redis是目前最受欢迎的kv类数据库&#xff0c;当然它的功能越来越多&#xff0c;早已不限定在kv场景&#xff0c;消息队列就是Redis中一个重要的功能。Redis从2010年发布1.0版本就具备一个消息队列的雏形&#xff0c;随着10多年的迭代&#xff0c;其消息队列的…

手机+卫星,到底有多难?

作者 | 小枣君来源 | 鲜枣课堂这几天&#xff0c;关于卫星手机的新闻又火了。根据媒体报道&#xff0c;9月6日即将发布的华为Mate 50系列手机&#xff0c;将具备“卫星通信能力”&#xff0c;在没有网络的地方&#xff0c;可通过卫星系统发送紧急短信。无独有偶&#xff0c;另有…

一线技术人的成长思考总结

简介&#xff1a; 作为长期奋战在一线的技术人&#xff0c;我深刻体会到几个思维能力对技术人成长的重要性&#xff0c;熟练运用这几种思维可以帮助我们快速的进入到新的领域&#xff0c;在分析、定位和解决问题上有很大帮助。作为长期奋战在一线的技术人&#xff0c;我深刻体会…

算法篇(暂时就接触一个)

diff算法 逐层对比&#xff0c;最小的力度是标签 1、虚拟DOM中key的作用&#xff1a; 1-1、简单的说&#xff1a;key是虚拟DOM对象的标识&#xff0c;在更新显示时key起着极其重要的作用。2-2、详细的说&#xff1a;当状态的数据发生变化时&#xff0c;react会根据【新数据】…

sealer背后实现整个集群一键交付的奥秘 | 龙蜥技术

简介&#xff1a;解读集群镜像“开箱即用”神器——sealer&#xff01; 编者按&#xff1a;集群镜像把整个集群看成一台服务器&#xff0c;把 k8s 看成云操作系统&#xff0c;实现整个集群的镜像化打包和交付&#xff0c;为企业级软件提供一种“开箱即用”的应用封装技术。本文…

突发!GitHub 将关闭 Trending 热榜,开发者不答应

作者 | 苏宓出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;今天&#xff0c;当登录到 GitHub 上时&#xff0c;GitHub Trending 页面突然显示了这样一则通知&#xff1a;Heads up! This Trending tab is being deprecated. Due to low usage of Trending Reposito…

如何设计一条稳定的应用交付流程?|云效工程师指北

简介&#xff1a;如何设计一条稳定的应用交付流程&#xff1f;为持续交付的过程提供了规范化的可能&#xff0c;也引入了让人不时埋首于配置文件的小山里的麻烦。我们不妨从一次略有波折、稍显隐患的集成部署案例开始&#xff0c;看看如何着手设计一条更为稳定的应用交付流程。…

阿里云混合云开放网络生态的探索与实践

简介&#xff1a;2022年F5多云应用服务科技峰会于4月正式召开。阿里云智能混合云平台高级网络架构师张然&#xff08;然犀&#xff09;应邀于合作伙伴生态专场分享了阿里云混合云在开放网络生态领域的探索与实践。 2022年F5多云应用服务科技峰会于4月正式召开。阿里云智能混合…

阿里云启动超级智算中心,总算力达12 EFLOPS

8月30日&#xff0c;阿里云宣布正式启动张北超级智算中心&#xff0c;总建设规模为12 EFLOPS&#xff08;每秒1200亿亿次浮点运算&#xff09;AI算力&#xff0c;将超过谷歌的9 EFLOPS和特斯拉的1.8 EFLOPS&#xff0c;成为全球最大的智算中心&#xff0c;可为AI大模型训练、自…

领域驱动编程,代码怎么写?

简介&#xff1a;领域驱动开发最重要的当然是正确地进行领域拆解&#xff0c;这个拆解工作可以在理论的指导下&#xff0c;结合设计者对业务的深入分析和充分理解进行。本文假定开发前已经进行了领域划分&#xff0c;侧重于研究编码阶段具体如何实践才能体现领域驱动的优势。 …

8年持续增长,全闪存厂商PureStorage分享存储智能化的三大重要指标

作者 | 宋慧 出品 | CSDN云计算 从PureStorage去年宣布为现代数据应用提供多云环境提供存储即服务&#xff0c;已经过去了快一年时间。全闪存技术厂商PureStorage最近再次接受CSDN采访&#xff0c;分享这一年的发展和对全闪存市场的分析。 首先&#xff0c;今年PureStorage继…

插件类……

生成线上环境 安装&#xff1a; yarn add serve -g 使用&#xff1a;serve build 生成唯一id值 安装&#xff1a;yarn add nanoid 引入&#xff1a;import {nanoid} from nanoid 使用&#xff1a;nanoid()

深度解密|基于 eBPF 的 Kubernetes 问题排查全景图发布

简介&#xff1a;通过 eBPF 无侵入地采集多语言、多网络协议的黄金指标/网络指标/Trace&#xff0c;通过关联 Kubernetes 对象、应用、云服务等各种上下文&#xff0c;同时在需要进一步下钻的时候提供专业化的监测工具&#xff08;如火焰图&#xff09;&#xff0c;实现了 Kube…

西门子低代码本土化发展策略:社交化、个性化、智能化

作者 | 宋慧 出品 | CSDN 云计算 距离西门子低代码进入中国市场&#xff0c;已经过去了快两年时间。低代码从被技术开发者热烈和两极化的讨论&#xff0c;已经落地成为了企业数字化中的一个选项和方案。西门子低代码刚进入中国时&#xff0c;CSDN就曾做过报道&#xff0c;《Me…

技术抉择:阿里云13年后重构全部核心调度系统

简介&#xff1a;在阿里云十三年的发展历史上&#xff0c;重新设计调度系统算得上是一个重要的技术抉择。 在阿里云十三年的发展历史上&#xff0c;重新设计调度系统算得上是一个重要的技术抉择。 云计算是一个庞大的技术工程。2009 年&#xff0c;阿里云从 0 到 1 自建国产云…

hooks的常用Api

Ref Hook Ref Hook可以在函数组件中存储/查找组件内的标签或其他数据语法&#xff1a;const refContainer useRef()获取值 refContainer .current.value作用&#xff1a;保存标签对象&#xff0c;功能与React.creatRef()一样 Effect Hook 1、Effect Hook 可以让你在函数组件…

Redis 的数据被删除,内存占用还这么大?

作者 | 码哥来源 | 码哥字节操作系统分配给 Redis 的内存有 6GB&#xff0c;通过指标 used_memory_human 发现存储数据只使用了 4GB&#xff0c;为何会这样&#xff1f;为何无法保存数据&#xff1f;通过 CONFIG SET maxmemory 100mb或者在 redis.conf 配置文件设置 maxmemory …

阿里云架构师解读四大主流游戏架构

简介&#xff1a;游戏行业是阿里云最早聚焦的行业之一&#xff0c;近年来游戏行业的变化、云计算产品技术的变化都与日俱进。随着行业业务的变化、技术架构的演进以及阿里云产品的迭代演进&#xff0c;整体的产品技术选型在不同的游戏场景、业务场景也不尽相同。本文将聚焦阿里…

国内唯一连续入选Gartner,Quick BI是如何做到的?

简介&#xff1a;阿里云Quick BI凭借灵活的公共云部署&#xff0c;私有化独立部署能力、无缝对接各类云上数据库和自建数据库、可视化搭建分析、高效数据处理能力与强大数据计算能力&#xff0c;使得在2022年持续入选Gartner ABI魔力象限报告。 作者 | 馨心 来源 | 阿里开发者公…

context的使用

概念 一种组件间通信方式&#xff0c;常用于【祖组件】与【后代组件】间通信 应用开发过程中&#xff0c;一般不会使用context&#xff0c;一般都用它封装react插件 //1 创建Context容器对象&#xff1a; cosnt XxxContext React.createContext(); // 2 渲染子组件时&#xff…