import { IEventDispatcher, NitroEvent } from '@nitrots/nitro-renderer'; import { useEffect } from 'react'; export const useEventDispatcher = (type: string | string[], eventDispatcher: IEventDispatcher, handler: (event: T) => void) => { useEffect(() => { if(Array.isArray(type)) { type.map(name => eventDispatcher.addEventListener(name, handler)); } else { eventDispatcher.addEventListener(type, handler); } return () => { if(Array.isArray(type)) { type.map(name => eventDispatcher.removeEventListener(name, handler)); } else { eventDispatcher.removeEventListener(type, handler); } } }, [ type, eventDispatcher, handler ]); }