关于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>
相关推荐
SameX9 小时前
ArkTS 做应用内"快捷胶囊" —— 续航日记踩过的两个鸿蒙声明式 UI workaround
前端
用户11481867894849 小时前
水印的实现方式逻辑
前端·python
yangmu320310 小时前
编程语言发展简史:从机器指令到智能协作
开发语言
孟陬11 小时前
Foobar 技术周刊#160:大模型让大规模形式化软件验证成为现实丨AI写C++代码之后会发生什么?丨我们真的需要alpha() 函数吗丨重试,有时会让故障更
前端·后端·typescript
flash俊杰12 小时前
屏幕感知双通道:截图之外,为什么还要一份 UIA 控件清单
前端
熟的生菜12 小时前
从零造一个腱绳驱动灵巧手——仿真器篇3:VTK 渲染与 3D 交互——看得见、点得着、转得动
前端
Pniubi12 小时前
Java为什么要分堆和栈
java·开发语言
小小晓.13 小时前
Qt 对话框、QLineEdit 与布局管理实战详解
开发语言·qt
Henry-SAP13 小时前
SAP PP中的核心业务流程——离散制造、重复制造、流程制造三大模式解析
前端·数据库·人工智能·制造
徐小夕13 小时前
下载量超 30 万的开源智能体 Prime Agent:它把自己从 TypeScript 重写成了 Rust
前端·vue.js·github