fix(nuxt): hook called twice during navigation

This commit is contained in:
Peter Buglavecz 2024-09-15 16:45:03 +02:00
parent 162055d0d0
commit d5cf708041

View File

@ -41,7 +41,6 @@ export default defineComponent({
const nuxtApp = useNuxtApp() const nuxtApp = useNuxtApp()
const pageRef = ref() const pageRef = ref()
const forkRoute = inject(PageRouteSymbol, null) const forkRoute = inject(PageRouteSymbol, null)
let previousPageKey: string | undefined | false
expose({ pageRef }) expose({ pageRef })
@ -97,10 +96,6 @@ export default defineComponent({
} }
const key = generateRouteKey(routeProps, props.pageKey) const key = generateRouteKey(routeProps, props.pageKey)
if (!nuxtApp.isHydrating && !hasChildrenRoutes(forkRoute, routeProps.route, routeProps.Component) && previousPageKey === key) {
nuxtApp.callHook('page:loading:end')
}
previousPageKey = key
const hasTransition = !!(props.transition ?? routeProps.route.meta.pageTransition ?? defaultPageTransition) const hasTransition = !!(props.transition ?? routeProps.route.meta.pageTransition ?? defaultPageTransition)
const transitionProps = hasTransition && _mergeTransitionProps([ const transitionProps = hasTransition && _mergeTransitionProps([
@ -161,10 +156,3 @@ function haveParentRoutesRendered (fork: RouteLocationNormalizedLoaded | null, n
(c, i) => c.components?.default !== fork.matched[i]?.components?.default) || (c, i) => c.components?.default !== fork.matched[i]?.components?.default) ||
(Component && generateRouteKey({ route: newRoute, Component }) !== generateRouteKey({ route: fork, Component })) (Component && generateRouteKey({ route: newRoute, Component }) !== generateRouteKey({ route: fork, Component }))
} }
function hasChildrenRoutes (fork: RouteLocationNormalizedLoaded | null, newRoute: RouteLocationNormalizedLoaded, Component?: VNode) {
if (!fork) { return false }
const index = newRoute.matched.findIndex(m => m.components?.default === Component?.type)
return index < newRoute.matched.length - 1
}