UNPKG

ahooks-v2

Version:
42 lines (33 loc) 1.05 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var react_1 = require("react"); var dom_1 = require("../utils/dom"); function useEventListener(eventName, handler, options) { if (options === void 0) { options = {}; } var handlerRef = react_1.useRef(); handlerRef.current = handler; react_1.useEffect(function () { var targetElement = dom_1.getTargetElement(options.target, window); if (!targetElement.addEventListener) { return; } var eventListener = function eventListener(event) { return handlerRef.current && handlerRef.current(event); }; targetElement.addEventListener(eventName, eventListener, { capture: options.capture, once: options.once, passive: options.passive }); return function () { targetElement.removeEventListener(eventName, eventListener, { capture: options.capture }); }; }, [eventName, options.target, options.capture, options.once, options.passive]); } exports["default"] = useEventListener;