ra-core
Version:
Core components of react-admin, a frontend Framework for building admin applications on top of REST services, using ES6, React
22 lines (20 loc) • 714 B
text/typescript
import { useRouterProvider } from './RouterProviderContext';
import type { RouterBlocker, RouterBlockerFunction } from './RouterProvider';
/**
* Hook to block navigation based on a condition.
* This is a router-agnostic wrapper that uses the configured router provider.
* Used by useWarnWhenUnsavedChanges to prevent losing form data.
*
* @example
* const blocker = useBlocker(shouldBlock);
* if (blocker.state === 'blocked') {
* // Show confirmation dialog
* blocker.proceed(); // or blocker.reset();
* }
*/
export const useBlocker = (
shouldBlock: RouterBlockerFunction | boolean
): RouterBlocker => {
const provider = useRouterProvider();
return provider.useBlocker(shouldBlock);
};