@byndyusoft-ui/use-event-listener
Version:
Byndyusoft UI React Hook
23 lines (22 loc) • 1.1 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const react_1 = require("react");
const use_latest_ref_1 = __importDefault(require("@byndyusoft-ui/use-latest-ref"));
function useEventListener(eventName, handler, target, options) {
const savedHandler = (0, use_latest_ref_1.default)(handler);
(0, react_1.useEffect)(() => {
var _a;
const targetElement = (_a = target === null || target === void 0 ? void 0 : target.current) !== null && _a !== void 0 ? _a : window;
if (!(targetElement && targetElement.addEventListener))
return;
const listener = event => savedHandler.current(event);
targetElement.addEventListener(eventName, listener, options);
return () => {
targetElement.removeEventListener(eventName, listener, options);
};
}, [eventName, target, options, savedHandler]);
}
exports.default = useEventListener;