当前位置: 首页 > news >正文

cms建站系统 开源深圳做网站公司 南山

cms建站系统 开源,深圳做网站公司 南山,北京十大装饰装修公司,wordpress安装数据库出错React项目中使用发布订阅模式 1.创建发布订阅器2.在组件中使用发布订阅器3. 订阅数据 发布订阅模式#xff08;也称观察者模式#xff09;是一种管理跨组件通信的有效方式#xff0c;尤其是在不希望直接依赖于特定组件的情况下。这种模式允许一个对象#xff08;发布者也称观察者模式是一种管理跨组件通信的有效方式尤其是在不希望直接依赖于特定组件的情况下。这种模式允许一个对象发布者通知多个其他对象订阅者而不必知道这些对象是谁或他们在哪里。这有助于解耦组件使得代码更加模块化和可维护。 1.创建发布订阅器 创建一个发布订阅器类负责管理时间的注册、取消和触发 # js class PubSub {constructor(){this.events {}}subscribe(event, callback){if(!this.events[event]){this.events[event] []}this.events[event].push(callback)}unsubscribe(event,callback){if(this.events[event]){this.events[event] this.events[event].filter(cb cb ! callback)}}publish(event,data){if(this.events[event]){this.events[event].forEach(callback callback(data))}} }const pubsub new PubSub()# tsinterface EventMap {[eventName: string]: any; }class EventCenter {private listeners {}constructor(){this.listeners {}}subscribeT extends keyof EventMap(event: T, callback: (data?: EventMap[T]) void) {if(!this.listeners[event]) {this.listeners[event] []}this.listeners[event].push(callback)}publishT extends keyof EventMap(event: T, data?: EventMap[T]) {const callbacks this.listeners[event]if(callbacks) {callbacks.forEach(callback {callback(data)})}}unsubscribeT extends keyof EventMap(event: T, callback?: (data: EventMap[T]) void) {const callbacks this.listeners[event];if (callbacks) {if (callback) {this.listeners[event] callbacks.filter(cb cb ! callback);} else {delete this.listeners[event];}}} }export default new EventCenter()2.在组件中使用发布订阅器 在你的React组件中使用这个发布订阅器。例如一个组件可以订阅事件以接收数据而另一个组件可以发布事件来发送数据。假设你有一个按钮组件当点击时他会触发一个事件发送一些数据 import React from react; import { pubsub } from ./pubsub; // 引入上面定义的PubSub实例class ButtonComponent extends React.Component {handleClick () {pubsub.publish(dataUpdated, { message: Hello World! });};render() {return (button onClick{this.handleClick}Click me!/button);} }3. 订阅数据 另一个组件可以订阅这个事件并在接收到数据时执行某些操作 import React, { useEffect, useState } from react; import { pubsub } from ./pubsub; // 引入上面定义的PubSub实例interface DisplayProps {} interface DisplayState {message: string; }const DisplayComponent: React.FCDisplayProps () {const [message, setMessage] useState();useEffect(() {const handleDataUpdate ({ message }: { message: string }) {setMessage(message);};pubsub.subscribe(dataUpdated, handleDataUpdate);return () {pubsub.unsubscribe(dataUpdated, handleDataUpdate);};}, []);return div{message}/div; };export default DisplayComponent;
http://www.hkea.cn/news/14356520/

相关文章:

  • 世代网络高端企业网站建设设计功能公司一流的商城网站建设
  • 农产品网站建设背景安康网站设计
  • 社区论坛自助建站网沈阳黄页88企业名录
  • 如何增加网站访问量种子搜索神器在线引擎
  • 有源码怎么搭建网站自己做电影网站怎么赚钱
  • 淮安哪里做网站成都 网站
  • 牙科医院网站设计怎么做电商平台的营销策略
  • 做网站首页看不到图片友情链接交易
  • 外贸电商做俄罗斯市场网站三门峡建设局网站
  • 成都中小企业网站建设哪家公司好途牛网站建设方案
  • 如何做游戏渠道网站德州金航网络公司网站建设
  • 公司备案查询网站地方门户系统源码
  • wang域名的网站个人网站备案都需要什么
  • 论文课程网站 建设背景免费电商网站建设平台
  • 数码产品商务网站建设湛江的网站
  • 网站做百度竞价引流费用多少钱wordpress 该页无法显示
  • 做婚纱网站的意义免费网络营销公司哪家好
  • 服装网站开发课程设计中国做的很好的食品网站
  • 2019为网站网站做代理被判缓刑网站空间 价格
  • 住房和城乡建设部网站打不开WordPress做分类信息
  • 有没有做二手设备网站wordpress 远程设置
  • 简单html网站模板网站首页设计说明
  • 3天网站seo优化成为超级品牌dz可以做门户网站吗
  • 网站建设 目的 意义 政策学而思编程网站
  • 建立个公司网站网络营销专业属于什么类别
  • 怎么给网站添加图标哪些公司的网站做的漂亮
  • 网站建设举措wordpress头部背景颜色
  • 网站空间商是什么意思单位网站怎么做
  • 做旅游网站用什么颜色网页美工设计培训班
  • 计算机 网站开发 文章精密模具东莞网站建设