import { EventBusSession, Listener, EventBusManager, EventType } from '../../Event'; import { useEffect, useState } from 'react'; export const useEventBus = (key: symbol, listernerMap: Map, Listener>) => { const [eventBus] = useState(EventBusManager.getInstance()); useEffect(() => { let session: EventBusSession; if (key) { eventBus.registerTempEventBus(key); session = eventBus.getTempEventSession(key)!; for (let item of listernerMap.entries()) { session?.on(item[0], item[1]); } } return () => { if (key) { session?.clear(); eventBus.unRegisterTempEventBus(key); } }; }, []); return { eventBus, }; };