@@ -1845,28 +1845,34 @@ function warningOnce(key: string, cond: boolean, message: string) {
18451845 }
18461846}
18471847
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 > {
1858- const state = useDataRouterState ( DataRouterStateHook . UseRouteLoaderData ) ;
1848+ type UseRouteArgs = [ ] | [ routeId : keyof RouteModules ] ;
1849+
1850+ // prettier-ignore
1851+ type UseRouteResult < Args extends UseRouteArgs > =
1852+ Args extends [ ] ? unknown :
1853+ Args extends [ "root" ] ? UseRoute < "root" > :
1854+ Args extends [ infer RouteId extends keyof RouteModules ] ? UseRoute < RouteId > | undefined :
1855+ never ;
1856+
1857+ type UseRoute < RouteId extends keyof RouteModules > = {
1858+ loaderData : GetLoaderData < RouteModules [ RouteId ] > ;
1859+ actionData : GetActionData < RouteModules [ RouteId ] > ;
1860+ } ;
18591861
1862+ export function useRoute < Args extends UseRouteArgs > (
1863+ ...args : Args
1864+ ) : UseRouteResult < Args > {
18601865 const currentRouteId : keyof RouteModules = useCurrentRouteId (
18611866 DataRouterStateHook . UseRoute ,
18621867 ) ;
1863- const id : keyof RouteModules = routeId ?? currentRouteId ;
1868+ const id : keyof RouteModules = args [ 0 ] ?? currentRouteId ;
18641869
1870+ const state = useDataRouterState ( DataRouterStateHook . UseRouteLoaderData ) ;
18651871 const route = state . matches . find ( ( { route } ) => route . id === id ) ;
18661872
1867- if ( route === undefined ) return undefined as UseRoute < RouteId > ;
1873+ if ( route === undefined ) return undefined as UseRouteResult < Args > ;
18681874 return {
18691875 loaderData : state . loaderData [ id ] ,
18701876 actionData : state . actionData ?. [ id ] ,
1871- } ;
1877+ } as UseRouteResult < Args > ;
18721878}
0 commit comments