| | |
| | | <template>
|
| | | <section class="app-main">
|
| | | <router-view v-slot="{ Component, route }">
|
| | | <transition name="fade-transform" mode="out-in">
|
| | | <keep-alive :include="tagsViewStore.cachedViews">
|
| | | <component v-if="!route.meta.link" :is="Component" :key="route.path"/>
|
| | | </keep-alive>
|
| | | </transition>
|
| | | <!--
|
| | | 原来这里包了一层 <transition name="fade-transform" mode="out-in">。
|
| | | Vue 3 下 transition 的 out-in 模式与 keep-alive 组合有已知缺陷:
|
| | | 切页时旧组件先退场、新组件再挂载,若 keep-alive 命中缓存,
|
| | | 退场动画与挂载时序会冲突,新组件偶发挂不上,表现为整片空白,
|
| | | 刷新一次能恢复但再切一次又空白。
|
| | | 这里去掉转场动画,保留 keep-alive(页面状态仍然缓存),稳定性优先。
|
| | | -->
|
| | | <keep-alive :include="tagsViewStore.cachedViews">
|
| | | <component v-if="!route.meta.link" :is="Component" :key="route.path"/>
|
| | | </keep-alive>
|
| | | </router-view>
|
| | | <iframe-toggle />
|
| | | </section>
|