今天开发中用到了
ts-bus
这个库,用于事件传递挺方便的。
文档地址:https://www.npmjs.com/package/ts-bus
简单的例子
import { EventBus, createEventDefinition } from "ts-bus";
// 创建 EventBus 事件
export const someEvent = createEventDefinition<{ url: string }>()("SOME_EVENT");
// 创建 bus 实例
const bus = new EventBus();
// 订阅 EventBus 事件,没到 publish 就会收到消息。函数返回参数是一个函数,用于取消订阅。
const unsubscribe = bus.subscribe(someEvent, event => {
alert(event.payload.url);
});
// 发布消息,发布的消息会在订阅事件中收到
bus.publish(someEvent({ url: "https://github.com" }));
// 取消订阅
unsubscribe();
其实就很好理解了,全局定义一个 EventBus 实例和一些事件。在需要收消息的地方订阅,在需要发消息的地方发布。最后记得用完了要取消订阅。
另外,它对 React 提供了一些扩展,如 hook 函数这种,具体用法参考文档~
最后
其实还有很多 EventBus 的库,这个会比较轻量一些。
网友评论