From 0e8b4e9c3382b24691d83f6be49a422a5495db89 Mon Sep 17 00:00:00 2001 From: obi chinedu frank <30419322+FrankChinedu@users.noreply.github.com> Date: Tue, 2 Aug 2022 14:24:55 +0100 Subject: [PATCH] useEventListener import { useRef, useEffect } from 'react' interface IEventProps { eventType: keyof GlobalEventHandlersEventMap listener: Function, target: Window | Document, options?: boolean | AddEventListenerOptions | undefined } const useEventListener = ({ eventType = 'scroll', listener = () => null, target = window, options = undefined }: IEventProps) => { const savedListener = useRef(); useEffect(() => { savedListener.current = listener; }, [listener]); useEffect(() => { if (!target?.addEventListener) return; const eventListener = (event: any) => savedListener?.current?.(event); target?.addEventListener?.(eventType, eventListener, options); return () => { target?.removeEventListener(eventType, eventListener, options); }; }, [eventType, target, options]); }; export default useEventListener; --- src/{useEventListener.js => useEventListener.tsx} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/{useEventListener.js => useEventListener.tsx} (100%) diff --git a/src/useEventListener.js b/src/useEventListener.tsx similarity index 100% rename from src/useEventListener.js rename to src/useEventListener.tsx