【React进步系列】万能通信之发布订阅

文章介绍了发布-订阅模式作为软件设计模式在React组件间通信的应用。通过安装和使用event-bus-hooks库,可以实现组件的订阅和发布事件,从而在不直接耦合的情况下进行通信。文章提供了详细的订阅和发布方法,并强调了在组件卸载时取消订阅的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用场景

  • 任何组件之间想要通信.例如A组件想用B组件的方法,或者你希望有一个公共的全局都可以使用的订阅合集.

什么是发布-订阅模式?

发布-订阅模式是一种软件设计模式,其中发布者和订阅者之间存在一种松散的耦合关系。发布者负责发布(或广播)事件或消息,而订阅者则负责订阅并接收这些事件或消息。这样,发布者和订阅者之间不直接进行通信,而是通过一个称为事件总线(Event Bus)或消息队列(Message Queue)的中介来进行通信

如何在react中使用

1.首先,安装event-bus-hooks库:

npm install event-bus-hooks
or
yarn event-bus-hooks

2.订阅方法-通过hooks订阅 (推荐使用)

import {useEventBus} from 'event-bus-hooks';

const login = (user)=>{
	// 进行登录操作
	// 如果在方法中使用到了state,需要在订阅的时候把依赖项放到useEventBus第三个参数的数组中.这样回调函数拿到的值才是最新的.
}

// hooks 订阅 
useEventBus('Global/login',login,[依赖项]);

订阅方法-通过Bus手动订阅

import Bus from 'event-bus-hooks';

const login = (user)=>{
	// 进行登录操作
}

// Bus 订阅 
useEffect(() => {
    //订阅
    Bus.$on('Global/login',login);
    return ()=>{
      // 卸载时取消订阅,防止重复订阅.
      Bus.$off('Global/login');
    }
  }, [依赖项]);

3.在发布者组件中,发布事件:

import Bus from 'event-bus-hooks';

const loginClick = ()=>{
	const user = {
		account:'账号',
		password:'密码'
	}
	//发布 user为参数,可以是args方式传递.支持多个参数.订阅方法中按顺序接收
	Bus.$emit('Global/login',user);
}

结语

发布-订阅模式为React应用程序中的组件通信提供了一种灵活且解耦的机制。通过事件或消息队列,组件可以在不直接耦合的情况下进行通信。这种模式在处理复杂的应用程序结构或多个组件之间的交互时非常有用。

希望本篇博客对你理解并应用发布-订阅模式在React中实现组件通信有所帮助!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值