UNPKG

@r-use/use-before-unload

Version:

The next-gen react hooks library. (useBeforeUnload module)

30 lines (25 loc) 760 B
'use strict'; 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;