diff --git a/packages/nuxt/src/pages/runtime/page.ts b/packages/nuxt/src/pages/runtime/page.ts index 22311d3f3f..ee04584273 100644 --- a/packages/nuxt/src/pages/runtime/page.ts +++ b/packages/nuxt/src/pages/runtime/page.ts @@ -40,7 +40,7 @@ export default defineComponent({ default: (routeProps: RouterViewSlotProps) => { if (!routeProps.Component) { return } - const key = generateRouteKey(props.pageKey, routeProps) + const key = generateRouteKey(routeProps, props.pageKey) const done = nuxtApp.deferHydration() const hasTransition = !!(props.transition ?? routeProps.route.meta.pageTransition ?? defaultPageTransition) @@ -62,7 +62,9 @@ export default defineComponent({ } } }) as DefineComponent<{ - name?: string, + name?: string + transition?: boolean | TransitionProps + keepalive?: boolean | KeepAliveProps route?: RouteLocationNormalized pageKey?: string | ((route: RouteLocationNormalizedLoaded) => string) [key: string]: any diff --git a/packages/nuxt/src/pages/runtime/utils.ts b/packages/nuxt/src/pages/runtime/utils.ts index f5cecf83a6..80b9121691 100644 --- a/packages/nuxt/src/pages/runtime/utils.ts +++ b/packages/nuxt/src/pages/runtime/utils.ts @@ -12,7 +12,7 @@ const interpolatePath = (route: RouteLocationNormalizedLoaded, match: RouteLocat .replace(/:\w+/g, r => route.params[r.slice(1)]?.toString() || '') } -export const generateRouteKey = (override: string | ((route: RouteLocationNormalizedLoaded) => string), routeProps: RouterViewSlotProps) => { +export const generateRouteKey = (routeProps: RouterViewSlotProps, override?: string | ((route: RouteLocationNormalizedLoaded) => string)) => { const matchedRoute = routeProps.route.matched.find(m => m.components?.default === routeProps.Component.type) const source = override ?? matchedRoute?.meta.key ?? (matchedRoute && interpolatePath(routeProps.route, matchedRoute)) return typeof source === 'function' ? source(routeProps.route) : source diff --git a/packages/nuxt/test/pages.test.ts b/packages/nuxt/test/pages.test.ts index 8005067691..f4dcd4fafb 100644 --- a/packages/nuxt/test/pages.test.ts +++ b/packages/nuxt/test/pages.test.ts @@ -362,7 +362,7 @@ describe('pages:generateRouteKey', () => { for (const test of tests) { it(test.description, () => { - expect(generateRouteKey(test.override, test.route)).to.deep.equal(test.output) + expect(generateRouteKey(test.route, test.override)).to.deep.equal(test.output) }) } })