ahooks-v2
Version:
react hooks library
42 lines (33 loc) • 1.05 kB
JavaScript
;
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;