UNPKG

875 BJavaScriptView Raw
1import { useEffect } from 'react';
2import useEventCallback from './useEventCallback';
3
4/**
5 * Attaches an event handler outside directly to specified DOM element
6 * bypassing the react synthetic event system.
7 *
8 * @param element The target to listen for events on
9 * @param event The DOM event name
10 * @param handler An event handler
11 * @param capture Whether or not to listen during the capture event phase
12 */
13export default function useEventListener(eventTarget, event, listener, capture) {
14 if (capture === void 0) {
15 capture = false;
16 }
17
18 var handler = useEventCallback(listener);
19 useEffect(function () {
20 var target = typeof eventTarget === 'function' ? eventTarget() : eventTarget;
21 target.addEventListener(event, handler, capture);
22 return function () {
23 return target.removeEventListener(event, handler, capture);
24 };
25 }, [eventTarget]);
26}
\No newline at end of file