-import { Component, createApp, nextTick } from 'vue'
+import {
+ Component,
+ createApp,
+ nextTick,
+ ComputedRef,
+ reactive,
+ computed,
+} from 'vue'
import * as runtimeDom from '@vue/runtime-dom'
import { compile } from '@vue/compiler-dom'
-import { Router } from '../src'
+import { Router, RouteLocationNormalizedResolved } from '../src'
import { routerKey, routeLocationKey } from '../src/utils/injectionSymbols'
export function mount(
const { template, components, ...ComponentWithoutTemplate } = Component
const app = createApp(ComponentWithoutTemplate as any, rootProps)
+
+ const reactiveRoute = {} as {
+ [k in keyof RouteLocationNormalizedResolved]: ComputedRef<
+ RouteLocationNormalizedResolved[k]
+ >
+ }
+ for (let key in router.currentRoute.value) {
+ // @ts-ignore: the key matches
+ reactiveRoute[key] = computed(() => router.currentRoute.value[key])
+ }
+
app.provide(routerKey, router)
- app.provide(routeLocationKey, router.currentRoute)
+ app.provide(routeLocationKey, reactive(reactiveRoute))
for (const componentName in components) {
app.component(componentName, components[componentName])