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

wordpress4.5.2主题保定seo网站推广

wordpress4.5.2主题,保定seo网站推广,医院网站方案,太原深圳建设工程信息网站React项目中使用发布订阅模式 1.创建发布订阅器2.在组件中使用发布订阅器3. 订阅数据 发布订阅模式(也称观察者模式)是一种管理跨组件通信的有效方式,尤其是在不希望直接依赖于特定组件的情况下。这种模式允许一个对象(发布者&…

React项目中使用发布订阅模式

  • 1.创建发布订阅器
  • 2.在组件中使用发布订阅器
  • 3. 订阅数据

发布订阅模式(也称观察者模式)是一种管理跨组件通信的有效方式,尤其是在不希望直接依赖于特定组件的情况下。这种模式允许一个对象(发布者)通知多个其他对象(订阅者),而不必知道这些对象是谁或他们在哪里。这有助于解耦组件,使得代码更加模块化和可维护。

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 = {}}subscribe<T extends keyof EventMap>(event: T, callback: (data?: EventMap[T]) => void) {if(!this.listeners[event]) {this.listeners[event] = []}this.listeners[event].push(callback)}publish<T extends keyof EventMap>(event: T, data?: EventMap[T]) {const callbacks = this.listeners[event]if(callbacks) {callbacks.forEach(callback => {callback(data)})}}unsubscribe<T 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.FC<DisplayProps> = () => {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.khdw.cn/news/65883.html

相关文章:

  • 网站建设提议会计培训班多少钱
  • 高明网站建设公司网络营销的认知
  • 河南网站建设电话seo优化网站教程百度
  • wordpress演示数据下载企业网站推广优化公司
  • 在网站怎么做代销站长网站提交
  • 怎样做自己的销售网站6怎么注册网站 个人
  • 有没有学做蛋糕的网站和视频关键词排名靠前
  • wordpress建企业网站设置网站提交百度收录
  • wordpress ip验证不当漏洞seo搜索引擎优化工程师招聘
  • 贸易公司网站模板郑州黑帽seo培训
  • 上海网站设计专业团队班级优化大师下载安装最新版
  • 哈尔滨+做网站公司有哪些深圳网络推广网站推广
  • 注册公司网站开发建设营业项目厦门网络推广外包多少钱
  • 12306网站建设花了多少钱常州网站推广公司
  • 网站设计纠纷成都百度推广电话
  • 做网站视频学什么专业热点事件
  • 上海高端品牌网站制作网络营销和传统营销有什么区别
  • 苏州有名的互联网企业网站建设优化
  • 高端品牌网站建设制作多少钱深圳网站建设
  • wp做的网站打开域名会跳转到其他网站口碑营销名词解释
  • 潍坊模板开发建站武汉seo工厂
  • 网站有什么百度系app
  • 地方新闻网站建设台州seo排名外包
  • 政府手机网站模板免费营销培训
  • 塑料模板seo网站分析报告
  • 东莞网站设计制作教程线上宣传推广方式
  • 网站搭建与网站建设北京刚刚传来特大消息
  • 做网站都是用ps吗专业营销团队外包公司
  • 做网站的域名怎样买长沙网站seo公司
  • 上海哪家公司做网站比较好免费合作推广