关于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>
相关推荐
Henrii_历小海4 分钟前
WhatsApp Web 不是手机镜像:多设备协议、本地数据流与出海获客流水线
前端·智能手机
炸薯条!5 分钟前
从零开始学C++(4) --类和对象
开发语言·c++·算法
渡我白衣6 分钟前
打印宏与socket模块设计
java·linux·开发语言·c++·ide·人工智能·eclipse
ayqy贾杰11 分钟前
Claude Fable 5 提示词泄漏,抓紧学习下
前端·后端·面试
Wang's Blog15 分钟前
Go-Zero框架上手前奏2: 微服务核心要素 —— 拆分、通信与无状态设计
开发语言·微服务·golang
To_OC8 小时前
别再串行写 await 了,Promise.all 才是并行请求的正确打开方式
前端·javascript·promise
vipbic9 小时前
中后台越做越乱后,我用插件化把它救回来了
前端·vue.js
Hyyy9 小时前
Computer Use 适合做什么,不适合做什么——一次真实使用后的思考
前端
小和尚同志9 小时前
前端 AI 单元测试思考与落地
前端·人工智能·aigc