UNPKG

1.01 kBJavaScriptView Raw
1"use strict";
2
3exports.__esModule = true;
4exports.default = useEventListener;
5var _react = require("react");
6var _useEventCallback = _interopRequireDefault(require("./useEventCallback"));
7function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8/**
9 * Attaches an event handler outside directly to specified DOM element
10 * bypassing the react synthetic event system.
11 *
12 * @param element The target to listen for events on
13 * @param event The DOM event name
14 * @param handler An event handler
15 * @param capture Whether or not to listen during the capture event phase
16 */
17function useEventListener(eventTarget, event, listener, capture = false) {
18 const handler = (0, _useEventCallback.default)(listener);
19 (0, _react.useEffect)(() => {
20 const target = typeof eventTarget === 'function' ? eventTarget() : eventTarget;
21 target.addEventListener(event, handler, capture);
22 return () => target.removeEventListener(event, handler, capture);
23 }, [eventTarget]);
24}
\No newline at end of file