react-use
Version:
Collection of React Hooks
38 lines (37 loc) • 1.18 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var react_1 = require("react");
var util_1 = require("./util");
var defaultTarget = util_1.isClient ? window : null;
var isListenerType1 = function (target) {
return !!target.addEventListener;
};
var isListenerType2 = function (target) {
return !!target.on;
};
var useEvent = function (name, handler, target, options) {
if (target === void 0) { target = defaultTarget; }
react_1.useEffect(function () {
if (!handler) {
return;
}
if (!target) {
return;
}
if (isListenerType1(target)) {
target.addEventListener(name, handler, options);
}
else if (isListenerType2(target)) {
target.on(name, handler, options);
}
return function () {
if (isListenerType1(target)) {
target.removeEventListener(name, handler, options);
}
else if (isListenerType2(target)) {
target.off(name, handler, options);
}
};
}, [name, handler, target, JSON.stringify(options)]);
};
exports.default = useEvent;