@tanstack/vue-router
Version:
Modern and scalable routing for Vue applications
48 lines • 1.42 kB
JSX
import * as Vue from 'vue';
import { hydrate } from '@tanstack/router-core/ssr/client';
import { HeadContent } from '../HeadContent';
import { RouterProvider } from '../RouterProvider';
let hydrationPromise;
export const RouterClient = Vue.defineComponent({
name: 'RouterClient',
props: {
router: {
type: Object,
required: true,
},
},
setup(props) {
const isHydrated = Vue.ref(false);
if (!hydrationPromise) {
if (!props.router.stores.matchesId.get().length) {
hydrationPromise = hydrate(props.router);
}
else {
hydrationPromise = Promise.resolve();
}
}
Vue.onMounted(() => {
hydrationPromise.then(() => {
isHydrated.value = true;
});
});
// For SSR, we're already hydrated
if (typeof window === 'undefined') {
isHydrated.value = true;
}
return () => {
if (!isHydrated.value) {
return null;
}
return Vue.h(RouterProvider, {
router: props.router,
}, {
innerWrap: (innerProps) => [
Vue.h(HeadContent),
innerProps.children,
],
});
};
},
});
//# sourceMappingURL=RouterClient.jsx.map