vue3 Transition 属性 mode=“out-in“ 页面跳转出现空白

750 阅读1分钟

碰到一个奇葩的问题,进入特定页面后,跳转其他页面均会白屏,刷新后就会加载。 image.png 一开始以为的是组件的name和标签的不一致 但是router-view 通过name去跳转也可以

    显示
    <!-- <router-view></router-view> -->
    显示
    <router-view v-slot="{ Component }">
      <component :is="Component" />
    </router-view>
    
     不显示
    <!-- <router-view v-slot="{ Component }">
      <transition name="fade-transform" mode="out-in">
        <keep-alive :include="cachedViews">
          <component :is="Component" />
        </keep-alive>
      </transition>
    </router-view> -->

加了也不显示

这个才是罪魁祸首呀 
    <router-view v-slot="{ Component }">
      <!-- <transition name="fade-transform" mode="out-in"> -->
      <component :is="Component" />
      <!-- </transition> -->
    </router-view>

可以显示

      <!-- <transition name="fade-transform" mode="out-in"> -->
      <keep-alive :include="cachedViews">
        <component :is="Component" />
      </keep-alive>
      <!-- </transition> -->
    </router-view>

解决

image.png

如果在App.vue添加了transition过渡动画,那么需要注意在模板中<template></template>下应当只包含一个标签,否则会出现空白的情况.

目前项目当中template属性下有多个根元素,需要一个个页面排查,直接把mode属性去掉即可
# 查看组件名

image.png # 参考:

https://blog.csdn.net/qq_43536071/article/details/126769064
https://www.cnblogs.com/FreezeNow/p/17252801.html