{"hits":[{"kind":"Guide section","title":"Leave guards (unsaved changes)","tool":"GetBrouterGuideSection(heading: \"Leave guards (unsaved changes)\")","snippet":"...use the [component-level navigation lock](#navigation-lock-blocking-from-the-component-itself) instead, which also covers parameter changes on the same route (a case `LeaveGuard`..."},{"kind":"Guide section","title":"Navigation lock: blocking from the component itself","context":"Keep-alive routes","tool":"GetBrouterGuideSection(heading: \"Navigation lock: blocking from the component itself\")","snippet":"### Navigation lock: blocking from the component itself  The lifecycle's two *pre-commit* callbacks let the routed component - the code that actually knows whether its form is dirt..."},{"kind":"Guide section","title":"Features","tool":"GetBrouterGuideSection(heading: \"Features\")","snippet":"...from `OnDeactivating` / `OnRenavigating` (React Router `useBlocker` / Vue `onBeforeRouteLeave`+`beforeRouteUpdate` style) - awaited, cancellable lock callbacks on the route lifecy..."},{"kind":"Guide section","title":"Keep-alive routes","tool":"GetBrouterGuideSection(heading: \"Keep-alive routes\")","snippet":"...resume (or refresh) in `OnActivated`.  ### Navigation lock: blocking from the component itself  The lifecycle's two *pre-commit* callbacks let the routed component - the code that..."},{"kind":"Docs page","title":"Guards & navigation locks","context":"Navigation","tool":"GetBrouterDocsPage(slug: \"guards\")","snippet":"Enter guards, preventive leave guards, component-level locks with custom dialogs, redirects and global hooks."},{"kind":"API method","title":"IBrouterRoute.OnDeactivatingAsync","context":"IBrouterRoute","tool":"GetBrouterApi(typeName: \"IBrouterRoute\")","snippet":"...re preventive: the URL never changes when the navigation is blocked. The callback may await user input (a custom \"unsaved changes\" dialog) - render the prompt, await its completion..."},{"kind":"API property","title":"BrouterOptions.RemountOnParameterChange","context":"BrouterOptions","tool":"GetBrouterApi(typeName: \"BrouterOptions\")","snippet":"Whether a navigation that stays on the same route but changes its route parameter values (/settings/profile -> /settings/account) rebuilds the route's content instead of re-binding..."},{"kind":"API parameter","title":"Broute.LeaveGuard","context":"Broute","tool":"GetBrouterApi(typeName: \"Broute\")","snippet":"Async leave guard: runs when a navigation would deactivate this route (it is part of the currently rendered chain but not of the new one), before OnNavigating and any enter Broute...."},{"kind":"API parameter","title":"Broute.RemountOnParameterChange","context":"Broute","tool":"GetBrouterApi(typeName: \"Broute\")","snippet":"Whether a navigation that stays on this route but changes its parameter values rebuilds the route's content instead of re-binding the live instance. Null (the default) follows Brou..."},{"kind":"Guide section","title":"Rebuild or re-bind on a parameter change","tool":"GetBrouterGuideSection(heading: \"Rebuild or re-bind on a parameter change\")","snippet":"## Rebuild or re-bind on a parameter change  A navigation can keep the same route matched and change only its parameter values (`/settings/profile → /settings/account`, `/item/1 →..."},{"kind":"API attribute","title":"BrouterRemountOnParameterChangeAttribute","tool":"GetBrouterApi(typeName: \"BrouterRemountOnParameterChangeAttribute\")","snippet":".../ [Route]: @attribute [BrouterRemountOnParameterChange]. A navigation that stays on the page but changes its route parameter values then disposes the page and mounts a fresh insta..."},{"kind":"API property","title":"BrouterRemountOnParameterChangeAttribute.Remount","context":"BrouterRemountOnParameterChangeAttribute","tool":"GetBrouterApi(typeName: \"BrouterRemountOnParameterChangeAttribute\")","snippet":"Whether a parameter-only navigation rebuilds the page. Defaults to true."}],"hasMore":true}