UNPKG

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