当前位置: 首页 > 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.yidumall.com/news/90879.html

相关文章:

  • 做任务赚钱的网站网站秒收录
  • 网站的功能和特色seo点击
  • 网站初始开发的步骤百度网址大全 简单版
  • 给村里做网站需要多少钱
  • 邢台新闻最新事件晨阳seo顾问
  • python整合网站开发技术东莞百度网站排名优化
  • 网络营销专员岗位职责关键词优化策略
  • 怎样用电脑ip做网站百度网页版
  • 摄影网站开发综述小程序设计
  • 两学一做11月答题网站百度指数官方网站
  • 石家庄网站建设系统网站管理与维护
  • 怎样做宣传网站西安seo代理计费
  • 做网站如何选择关键词阳西网站seo
  • 滕州外贸软件公司seo专员工作容易学吗
  • 贵州建筑工程网岳阳seo公司
  • 大连开发区招聘网站百度号码认证平台首页
  • 做网站不用服务器网络营销的目的是
  • 网站建设 软件开发网络网站
  • 贵阳网络公司网站建设热点新闻事件及观点
  • 网站建设专业特长国际军事最新头条新闻
  • wordpress 自动排版seo百度快照优化公司
  • 可以自己做网站赚钱吗比较开放的浏览器
  • 沈阳建设工程信息网浑南新区黄冈seo顾问
  • 扬州市江都区城乡建设局网站以图搜图百度识图网页版
  • 做网站软件的北京网站营销与推广
  • 大学生网站建设小结温州seo博客
  • 如何做公司的网站建设百度链接提交入口
  • 网站怎么做才能被百度收录网站优化提升排名
  • 网站建设新闻跨境电商怎么做
  • 杭州公司注销流程及费用seo泛目录培训