关于vue3切换空白页问题解决

记录问题:vue3中修改当前页面代码保存后,回到页面显示空白;切换菜单页面同样显示空白,刷新页面后恢复显示正常。
解决方法:为router-view添加key :key="$route.fullPath"(非根组件)

在router-view 中给路由添加唯一标识key

理由:

①不设置key,vue会复用相同组件,在路由来回切换时会导致页面不刷新,因为不再重新创建实例不再执行created 和 mounted钩子函数;

②设置key,切换路由时key不同,相关的钩子函数被正确触发,组件被重新创建,重新创建实例。

注:项目若使用layout封装布局,要在layout文件夹下的主页面的router-view上加key,例如我的是src\layout\components\AppMain.vue。刚开始我在src\App.vue中的router-view上添加key,也可以达到效果,但是切换页面会导致导航栏收起再打开,视觉效果不好(具体文件路径以自己项目为准)

原因:

①在src\App.vue中添加,影响整个应用范围内的路由组件,包括导航栏都会被重新创建,所以导航栏会关闭再打开;

②在src\layout\components\AppMain.vue中添加,key只会影响AppMain.vue内部包含的组件,而不会影响外部的导航栏等组件。

bash 复制代码
<template>
  <section class="app-main">
    <router-view v-slot="{ Component, route }" :key="$route.fullPath">
      <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>
    </router-view>
    <iframe-toggle />
    <copyright />
  </section>
</template>
相关推荐
LinXunFeng8 小时前
Obsidian - 使用 Share Note 分享笔记并自部署
前端·笔记·github
乘风gg12 小时前
为什么AI 时代来临,大部分人吃不到红利
前端·ai编程·claude
恋猫de小郭13 小时前
Android 限制侧载新进展,谷歌联合国内厂商推验证计划
android·前端·flutter
IT_陈寒13 小时前
Redis内存爆了,原来我漏掉了这个致命配置
前端·人工智能·后端
恋猫de小郭13 小时前
解读 Android 17 全新内存限制,有没有“豁免”后门?
android·前端·flutter
Hyyy14 小时前
理解LLM的基本工作原理:预训练、微调、推理的区别
前端
Gatlin14 小时前
前端逆向与反逆向:一场猫鼠游戏的底层逻辑与实战
前端
Pedantic15 小时前
本地通知(Local Notifications)学习笔记
前端
森蓝情丶15 小时前
我给 AI 搭了个法庭:一个前端仔的 LangGraph 实战全记录
前端·后端
爱勇宝15 小时前
干了近 8 年,一夜之间被裁:AI 时代,程序员最该害怕的不是 AI
前端·后端·程序员