@r-use/use-before-unload
Version:
The next-gen react hooks library. (useBeforeUnload module)
30 lines (25 loc) • 760 B
JavaScript
Object.defineProperty(exports, '__esModule', { value: true });
const react = require('react');
const shared = require('@r-use/shared');
const useBeforeUnload = (enabled = true, message) => {
const handler = react.useCallback((event) => {
const finalEnabled = typeof enabled === "function" ? enabled() : true;
if (!finalEnabled) {
return;
}
event.preventDefault();
if (message) {
event.returnValue = message;
}
return message;
}, [enabled, message]);
react.useEffect(() => {
if (!enabled) {
return;
}
shared.on(window, "beforeunload", handler);
return () => shared.off(window, "beforeunload", handler);
}, [enabled, handler]);
};
exports.useBeforeUnload = useBeforeUnload;
;