关于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>
相关推荐
春日见8 分钟前
车辆动力学:前后轮车轴
java·开发语言·驱动开发·docker·计算机外设
锐意无限12 分钟前
Swift 扩展归纳--- UIView
开发语言·ios·swift
低代码布道师12 分钟前
Next.js 16 全栈实战(一):从零打造“教培管家”系统——环境与脚手架搭建
开发语言·javascript·ecmascript
鹏北海-RemHusband27 分钟前
从零到一:基于 micro-app 的企业级微前端模板完整实现指南
前端·微服务·架构
LYFlied28 分钟前
AI大时代下前端跨端解决方案的现状与演进路径
前端·人工智能
念何架构之路30 分钟前
Go进阶之panic
开发语言·后端·golang
光影少年31 分钟前
AI 前端 / 高级前端
前端·人工智能·状态模式
一位搞嵌入式的 genius33 分钟前
深入 JavaScript 函数式编程:从基础到实战(含面试题解析)
前端·javascript·函数式
亓才孓34 分钟前
[Properties]写配置文件前,必须初始化Properties(引用变量没执行有效对象,调用方法会报空指针错误)
开发语言·python
傻乐u兔38 分钟前
C语言进阶————指针3
c语言·开发语言