diff --git a/packages/react-router/src/route.ts b/packages/react-router/src/route.ts index 3148ec7c33..784e28cfa9 100644 --- a/packages/react-router/src/route.ts +++ b/packages/react-router/src/route.ts @@ -890,7 +890,7 @@ export class Route< return useLoaderData({ ...opts, from: this.id } as any) } - useNavigate = (): UseNavigateResult => { + useNavigate = (): UseNavigateResult => { return useNavigate({ from: this.id }) } } diff --git a/packages/react-router/tests/createRouteApi.test-d.tsx b/packages/react-router/tests/routeApi.test-d.tsx similarity index 67% rename from packages/react-router/tests/createRouteApi.test-d.tsx rename to packages/react-router/tests/routeApi.test-d.tsx index a13339c2ac..927cd6a536 100644 --- a/packages/react-router/tests/createRouteApi.test-d.tsx +++ b/packages/react-router/tests/routeApi.test-d.tsx @@ -36,17 +36,31 @@ const defaultRouter = createRouter({ type DefaultRouter = typeof defaultRouter -describe('createRouteApi', () => { +type ExtractDefaultFrom = + T extends UseNavigateResult ? DefaultFrom : never + +describe('getRouteApi', () => { const invoiceRouteApi = getRouteApi<'/invoices/$invoiceId', DefaultRouter>( '/invoices/$invoiceId', ) describe('useNavigate', () => { test('has a static `from`', () => { const navigate = invoiceRouteApi.useNavigate() + navigate + expectTypeOf< + ExtractDefaultFrom + >().toEqualTypeOf<'/invoices/$invoiceId'>() + }) + }) +}) - expectTypeOf(navigate).toEqualTypeOf< - UseNavigateResult<'/invoices/$invoiceId'> - >() +describe('createRoute', () => { + describe('useNavigate', () => { + test('has a static `from`', () => { + const navigate = invoiceRoute.useNavigate() + expectTypeOf< + ExtractDefaultFrom + >().toEqualTypeOf<'/invoices/$invoiceId'>() }) }) })