Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | import { useEffect, useRef } from 'react'; export const useWindowEvent = <TEventType extends string>( type: TEventType, listener: TEventType extends keyof WindowEventMap ? (ev: WindowEventMap[TEventType]) => void : (ev: CustomEvent) => void, options?: AddEventListenerOptions | boolean, ) => { const listenerRef = useRef(listener); listenerRef.current = listener; useEffect(() => { const handler = listenerRef.current as EventListener; globalThis.addEventListener(type, handler, options); return () => { globalThis.removeEventListener(type, handler, options); }; }, [type, options]); }; |