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

闵行网站开发热搜关键词

闵行网站开发,热搜关键词,怎么把网站整站下载,全国部分高校精品课程建设网站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/36908.html

相关文章:

  • 湘西建网站自助建站系统哪个好用
  • wordpress会员模板seo关键词推广优化
  • wordpress编辑文章出现错误500seo搜索引擎优化总结
  • 微博分享的网站怎么做搜索引擎算法
  • wordpress页面 中英文福州seo兼职
  • 投稿的网站营销伎巧第一季
  • 票务网站建设免费广告
  • b2b行业门户网站销售实战攻略如何推广一个平台
  • 临沂做网站公司哪家好在线资源搜索神器
  • .net网站开发实站seo网站优化推广
  • 如何根据网址攻击网站百度移动点击排名软件
  • 菜鸟零基础如何自学编程台州关键词优化平台
  • 人才招聘网站开发 源代码湖南seo公司
  • 网页设计与制作实用教程电子资源快速整站排名seo教程
  • 沌口网站建设排名优化网站建设
  • 有教做翻糖的网站吗百度域名查询官网
  • 做360手机网站优化快营销渠道策略
  • 做网站费用走什么科目百度搜索资源平台官网
  • 免费自学编程佛山百度提升优化
  • 简述jsp网站架构百度免费发布信息
  • wordpress是动态网站高清的网站制作
  • 网站建设需求分析模板友情链接平台网站
  • 广州做网店哪个网站批发网百度推广的几种方式
  • wordpress装了英文版怎么转中文宿州百度seo排名软件
  • 临湘网站建设最近三天的新闻大事简短
  • ppt做视频的模板下载网站有哪些内容中国最新军事新闻
  • java做的大型网站汕头seo优化培训
  • 没有网站如何做淘宝客seo实战密码在线阅读
  • 山东外贸网站建设是什么bing搜索国内版
  • 奶茶网站建设方案模板深圳网站建设专业乐云seo