},
template: `
- <div id="app">
- <ul>
- <li><router-link to="/">Home</router-link></li>
- <li><router-link to="/data">Suspended</router-link></li>
- <li><router-link to="/data/data">Suspended nested</router-link></li>
- <li><router-link :to="{ name: 'id1', params: { id: nextId }}" v-slot="{ route }">{{ route.fullPath }}</router-link></li>
-
- <li><router-link to="/data-2">Suspended (2)</router-link></li>
- <li><router-link to="/data-2/data">Suspended nested (2)</router-link></li>
- <li><router-link :to="{ name: 'id2', params: { id: nextId }}" v-slot="{ route }">{{ route.fullPath }}</router-link></li>
- </ul>
-
- <pre v-if="pendingRoute">Loading {{ pendingRoute.fullPath }} from {{ $route.fullPath }}</pre>
-
- <router-view v-slot="{ Component }" :route="pendingRoute">
- <transition name="fade" mode="out-in" v-if="Component">
- <suspense :timeout="0" v-bind="suspenseProps">
- <component :is="Component" />
- <template #fallback>
- <p>Loading App...</p>
- </template>
- </suspense>
- </transition>
- </router-view>
+ <ul>
+ <li><router-link to="/">Home</router-link></li>
+ <li><router-link to="/data">Suspended</router-link></li>
+ <li><router-link to="/data/data">Suspended nested</router-link></li>
+ <li><router-link :to="{ name: 'id1', params: { id: nextId }}" v-slot="{ route }">{{ route.fullPath }}</router-link></li>
+ <li><router-link to="/data-2">Suspended (2)</router-link></li>
+ <li><router-link to="/data-2/data">Suspended nested (2)</router-link></li>
+ <li><router-link :to="{ name: 'id2', params: { id: nextId }}" v-slot="{ route }">{{ route.fullPath }}</router-link></li>
+ </ul>
- </div>
+ <pre v-if="pendingRoute">Loading {{ pendingRoute.fullPath }} from {{ $route.fullPath }}</pre>
+
+ <router-view v-slot="{ Component }" :route="pendingRoute">
+ <transition name="fade" mode="out-in" v-if="Component">
+ <suspense :timeout="0" v-bind="suspenseProps">
+ <component :is="Component" />
+ <template #fallback>
+ <p>Loading App...</p>
+ </template>
+ </suspense>
+ </transition>
+ </router-view>
`,
})
app.use(router)
const app = createApp({
template: `
- <div id="app">
- <h1>Suspense</h1>
+ <h1>Suspense</h1>
- <pre>
+ <pre>
route: {{ $route.fullPath }}
enters: {{ state.enter }}
updates: {{ state.update }}
leaves: {{ state.leave }}
- </pre>
+ </pre>
- <pre id="logs">{{ logs.join('\\n') }}</pre>
+ <pre id="logs">{{ logs.join('\\n') }}</pre>
- <button id="resetLogs" @click="logs = []">Reset Logs</button>
+ <button id="resetLogs" @click="logs = []">Reset Logs</button>
- <ul>
- <li><router-link to="/">/</router-link></li>
- <li><router-link to="/foo">/foo</router-link></li>
- <li><router-link to="/foo-async">/foo-async</router-link></li>
- <li><router-link id="update-query" :to="{ query: { n: (Number($route.query.n) || 0) + 1 }}" v-slot="{ route }">{{ route.fullPath }}</router-link></li>
- </ul>
+ <ul>
+ <li><router-link to="/">/</router-link></li>
+ <li><router-link to="/foo">/foo</router-link></li>
+ <li><router-link to="/foo-async">/foo-async</router-link></li>
+ <li><router-link id="update-query" :to="{ query: { n: (Number($route.query.n) || 0) + 1 }}" v-slot="{ route }">{{ route.fullPath }}</router-link></li>
+ </ul>
- <router-view v-slot="{ Component }" >
- <Suspense>
- <component :is="Component" class="view" />
- </Suspense>
- </router-view>
- </div>
+ <router-view v-slot="{ Component }" >
+ <Suspense>
+ <component :is="Component" class="view" />
+ </Suspense>
+ </router-view>
`,
setup() {
return { state, logs }
<li><router-link to="/nested/bar">/nested/bar</router-link></li>
</ul>
<router-view class="view" v-slot="{ Component }">
- <suspense :timeout="0">
<transition :name="transitionName" mode="out-in">
<component :is="Component" />
</transition>
- </suspense>
</router-view>
</div>
`,