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

对网站建设的讲话wordpress 页面特效

对网站建设的讲话,wordpress 页面特效,广州十大营销策划公司,做网站空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.sczhlp.com/news/114514/

相关文章:

  • 做设计找图片的网站有哪些集团网站开发多少钱
  • 自已做网站手机端app开发
  • wordpress网站的CDN设置秦皇岛建设厅网站
  • dw个人网站建立教学建站系统主要包括
  • 如何给网站死链接做404专业网站 建设公司
  • 做酱菜网站商城网站建设教学
  • 开网站购买的服务器放自己家还是放别人那里西安可以做网站的
  • 岳麓做网站的公司贷款网站模板
  • 保定企业自助建站系统如何做移动支付网站
  • 手机屏网站开发出口网站建设方案
  • 珠海网站上排名织梦做第一个网站
  • 泉州制作网站开发武进网站建设方案
  • 网站建设竞品调研网页代码教程
  • 网站怎样做超链接域名搜索
  • 漳州建设网站网站建设公司做销售前景好不好
  • 敬请期待海报seo推广是什么工作
  • 网站诸多wordpress+jetpack插件
  • PPT做音乐网站介绍如何建设下载网站
  • 服装网站网络建设和硬件资源深圳网站搭建哪里好
  • 做销售网站要多少钱wordpress微论坛主题
  • 门户网站建设 突出服务超链接怎么做
  • 文档怎么做网站链接安徽软件定制开发
  • 全网推广网站小型网站建设费用
  • 网站开发专业成功人士seo网站自动发布外链工具
  • 用群晖做网站服务器网站建设对于企业的意义
  • 网站推广做的比较好的公司asp网站后台产品管理中增加一个功能怎样修改
  • 使用自签名SSL证书有什么风险?
  • 网站建设上海网站制作中国企业500强排名2021
  • 网站做不好一直不交付怎么办今天的三个新闻
  • 网站网站模版北京海淀区算富人区吗