@@ -1287,6 +1287,7 @@ enum DataRouterStateHook {
1287
1287
UseRevalidator = "useRevalidator" ,
1288
1288
UseNavigateStable = "useNavigate" ,
1289
1289
UseRouteId = "useRouteId" ,
1290
+ UseRoute = "useRoute" ,
1290
1291
}
1291
1292
1292
1293
function getDataRouterConsoleError (
@@ -1844,18 +1845,28 @@ function warningOnce(key: string, cond: boolean, message: string) {
1844
1845
}
1845
1846
}
1846
1847
1847
- type UseRoute < T extends keyof RouteModules > = {
1848
- loaderData : GetLoaderData < RouteModules [ T ] > ;
1849
- actionData : GetActionData < RouteModules [ T ] > ;
1850
- } ;
1851
- export function useRoute < T extends keyof RouteModules > (
1852
- routeId : T ,
1853
- ) : UseRoute < T > | undefined {
1848
+ type UseRoute < RouteId extends keyof RouteModules > =
1849
+ | {
1850
+ loaderData : GetLoaderData < RouteModules [ RouteId ] > ;
1851
+ actionData : GetActionData < RouteModules [ RouteId ] > ;
1852
+ }
1853
+ | ( RouteId extends "root" ? never : undefined ) ;
1854
+
1855
+ export function useRoute < RouteId extends keyof RouteModules > (
1856
+ routeId ?: RouteId ,
1857
+ ) : UseRoute < RouteId > {
1854
1858
const state = useDataRouterState ( DataRouterStateHook . UseRouteLoaderData ) ;
1855
- const route = state . matches . find ( ( { route } ) => route . id === routeId ) ;
1856
- if ( route === undefined ) return undefined ;
1859
+
1860
+ const currentRouteId : keyof RouteModules = useCurrentRouteId (
1861
+ DataRouterStateHook . UseRoute ,
1862
+ ) ;
1863
+ const id : keyof RouteModules = routeId ?? currentRouteId ;
1864
+
1865
+ const route = state . matches . find ( ( { route } ) => route . id === id ) ;
1866
+
1867
+ if ( route === undefined ) return undefined as UseRoute < RouteId > ;
1857
1868
return {
1858
- loaderData : state . loaderData [ routeId ] ,
1859
- actionData : state . actionData ?. [ routeId ] ,
1869
+ loaderData : state . loaderData [ id ] ,
1870
+ actionData : state . actionData ?. [ id ] ,
1860
1871
} ;
1861
1872
}
0 commit comments