记录vue-router跳转页面空白问题

Vue3路由跳转页面空白?可能是这个注释写法惹的祸(附解决方案) 本文深入解析了Vue3项目中路由跳转后页面出现空白的常见陷阱,指出问题根源可能在于`<template>`标签下的注释写法。Vue3的模板解析机制要求根节点有且仅有一个元素,不当的顶层注释可能干扰渲染函数生成,尤其在路由跳转时易引发静默失败。文章提供了调整注释位置、使用JS注释及配置编译器等多种解决方案,并给出了系统性的诊断流程与工程化预防策略,帮助开发者彻底规避此类问题。 阅读详情
AI摘要

本文详细记录了Vue Router在实际使用中遇到的各种问题及解决方案,包括父组件配置RouterView、路由表正确配置、component命名错误、transition组件使用误区、动态路由添加后的白屏问题等。通过实例分析,帮助开发者避免和解决Vue Router的常见陷阱。

vue- router里踩坑太多,全记录在这里,持续更新

1.父组件中要配置路由出口 RouterView

<template>
  <div class="main">
    <router-view></router-view>
  </div>
</template>

2.检查路由表配置

  • 子路由路径 不要加 /
  • routes配置项名称 不要写成 route
export default new Router({
  routes: [  // 1.这里不要写成route,注意是复数!
    {
      path: '/',
      name: 'HelloWorld',
      component: HelloWorld
    },
   
      path: '/hi',
      component: Hi,
      children: [  
      	// 2.子路由路径 不要加 /
        {path: '/hi2', component: Hi2}, // 错误写法
        {path: 'hi3', component: Hi3}。// 正确写法
 
      ]
    }
  ]
})

component配置项

  • component配置项名称 不要写成 components
  • 中间路由跳转重定向,也要配置 component

layout 这个路由跳转后重定向到 ‘/user/manage’,虽然这个路由被重定向,但是组件也要注册,否则它的子组件 userManage 无法挂载。

错误写法:

{
    path: '/user',
    name: 'user',
    redirect: '/user/manage', // 此路由跳转后重定向到 '/user/manage'
    children: [
      {
        path: '/user/manage',
        name: 'userManage',
        component: () => import('@/views/user-manage'),
      }
  }
  

正确写法:

{
    path: '/user',
    name: 'user',
    component: () => import('@/views/layout'),  // 虽然这个路由被重定向,但是不要忘记 注册组件
    redirect: '/user/manage', // 此路由跳转后重定向到 '/user/manage'
    children: [
      {
        path: '/user/manage',
        name: 'userManage',
        component: () => import('@/views/user-manage'),
      }
  }
  

3. 使用 transition组件后页面空白

确保路由组件中只有一个根节点

虽然 Vue3的 template 中可以使用多个根节点,但是<transition>中的组件渲染无法设置动画的非元素根节点,换句话,<transition>中的组件中只能有一个根节点。
多个根节点会导致 过渡无法生效,组件无法切换就出现了空白页。

<template>
	<div>A1</div>
	<div>A1</div>
</template>

<template>
<div>
    <div>A1</div>
    <div>A1</div>
 </div>
</template>

注意:注释标签也是节点,例如以下属于多个根节点

<template>
<!-- 注释 -->
<div>
    <div>A2</div>
     <div>A2</div>
</div>
</template>

component组件添加key值

于Vue机制的原因,为了性能会使用同一个元素。也就是说你切换时并不会更换掉整个元素,而是替换掉该元素中的内容的值,以此来切换,所以在这里需要添加key。

为了保证key的唯一性,可以使用route的path来作为key。

<router-view v-slot="{ Component,route  }">
    <transition name="fade" mode="out-in">
        <component :is="Component" :key="route.path"/>
    </transition>
</router-view>

添加动态路由后页面空白

使用 addRoutes 动态添加路由跳转后页面刷新空白

原因:(动态)异步路由添加,执行addRoutes是需要时间的,刚刚addRoutes()就执行next()立刻访问被添加的路由,然而此时addRoutes()没有执行结束,因而找不到刚刚被添加的路由导致白屏。

解决方法:使用 next({…to}),从新访问一次路由 (结束当前导航,执行新的导航,再次执行beforeEach回调,直到 {…to}路径找到为止,才执行next()

// 全局 前置守卫
router.beforeEach(async(to, from, next) => {
  document.title = getPageTitle(to.meta.title)
  const hasToken = getToken()
  if (hasToken) {
    if (to.path === '/login') {
      next({ path: '/' })
    } else {
      const hasGetUserInfo = store.getters.name
      if (hasGetUserInfo) {
        next()
      } else {
        try {
          await store.dispatch('user/getInfo')
          // next(path) 中断当前导航,执行新的导航
          // 如果 addRoutes 并未完成,路由守卫会一层一层的执行,直到 addRoutes 完成,找到对应的路由才会放行
          next({ ...to, replace: true }) // 正确写法
          // next() // 错误写法
        } catch (error) {
          await store.dispatch('user/resetToken')
          Message.error(error || 'Has Error')
          next(`/login?redirect=${to.path}`)
          NProgress.done()
        }
      }
    }
  } else {
    ...
})

其他

如果以上操作排查不出原因,可能是组件自身无法渲染,与路由切换无关,不要注册路由组件,直接开一个页面渲染该组件,再排查原因

Vue 路由跳转不加载问题分析与解决 如果路由配置有误,可能会导致路由跳转后页面不加载的问题。在使用 Vue Router 进行路由跳转时,我们应该注意正确配置路由、版本兼容性、组件缓存、异步加载和组件内部问题,以确保页面能正常加载。在 Vue.js 中,使用 Vue Router 可以实现单页应用的路由功能,方便我们进行页面跳转和组件加载。Vue Router 默认开启了路由组件的缓存机制,即同一个路由组件在第二次访问时不会重新加载,而是直接使用缓存的组件实例。如果你的应用中使用了异步加载路由组件的方式,可能会导致页面不加载的问题。 阅读详情

相关推荐

【Vue知识点总结】Vue如何实现跳转页面?

在 Vue.js 中实现跳转到登录页是常见的需求,通常用于用户未登录或token 失效等场景。

这是个栗子的博客 300

Vue路由跳转但显示空白页面

在router文件下的index.js 中配置了‘Hi’的子路由,但是点击跳转界面却不显示子路由的内容,但是url正常改变。 原因一: 没有在父路由中加上<router-view></router-view>,来将对应的组件内容渲染到router-view。 路由是负责将进入的浏览器请求映射到特定的组件代码中。即决定了由谁(组件)去响应客户端请求。简单说路由就是url地址和对应的资源(组件)的映射,通过一个路径的url地址,可以唯一找到一个资源。 解决方法:在父路由的...

weixin_51173316的博客 3万+

感应加热电源设计避坑指南:半桥LC串联谐振的5个关键问题

本文深入解析半桥LC串联谐振在感应加热电源设计中的5个关键问题,包括均压电阻选型、功率管驱动时序、谐振频率补偿等实战经验。通过真实故障案例和解决方案,帮助工程师避开常见设计陷阱,提升电路稳定性和效率,特别适合从事桥感应加热电源开发的工程师参考。

weixin_27013291的博客 510

Vue设置了路由跳转后页面还是空白解决办法

1.已经设置路由跳转了也是空白是因为没在app.vue里加入。app.vue中即可。

qq_67801847的博客 4158

OBS直播美颜全攻略:从插件下载到参数调校一站式指南

本文提供OBS直播美颜插件从下载安装到参数调校的一站式指南。详细介绍了如何安全获取并安装OBS美颜插件,重点讲解了在OBS中添加美颜滤镜的核心步骤,并分享了磨皮、肤色调整、细节增强等关键参数的实战调校技巧,帮助主播打造自然、专业的直播形象。

weixin_29197835的博客 329

ASReview:基于主动学习的AI文献筛选工具,提升科研效率

主动学习是机器学习的一个重要分支,其核心原理是让算法能够主动选择最有价值的数据进行标注,从而以更低的成本获得更好的模型性能。这一技术通过人机协作的闭环流程,显著提升了数据标注和模型训练的效率和精度。在工程实践中,主动学习尤其适用于数据标注成本高昂或数据类别不平衡的场景,例如医学影像分析、自然语言处理中的文本分类以及推荐系统的冷启动问题。通过优先标注模型最不确定的样本,它能够有效解决传统机器学习面临的冷启动和数据稀疏性挑战。本文聚焦的ASReview项目,正是将主动学习原理应用于系统文献综述这一具体场景,通过

weixin_28725959的博客 432

真正有效解决vue addRoute动态添加路由后刷新页面白屏的靠谱方法及思路,切实可行!

Vue3动态路由刷新后失效真正可行的解决方案!

qq_37150410的博客 1万+

5个实战必备的多模态情感分析数据集(附下载链接与避坑指南)

本文精选了5个实战必备的多模态情感分析数据集,包括CMU-MOSEI、CH-SIMS、UR-FUNNY、MUStARD和IEMOCAP,并提供了详细的下载链接与避坑指南。文章重点介绍了如何高效获取、预处理这些数据集,并自然整合了多模态情感分析的核心热词,旨在帮助研究者和开发者快速启动项目,规避常见陷阱,聚焦模型创新。

yolo5detector的博客 280

记录解决动态路由页面刷新白屏问题

首先问题原因确实是路由还未加载完成就进行了路由跳转,至于为什么使用了await没有解决问题,原因是即使使用await等待菜单数据加载上了,但是Vue Router使用的是旧的路由表,旧的路由表是没有动态路由的数据的,相当于路由跳转到一个不存在的路由上,从而页面白屏。进入子路由页面后,刷新会出现空白,我在网上查了许多解决方法,基本意思是说路由在还未加载完成就进行了路由跳转,但是我在路由守卫获取菜单数据的方法前加了await,理论上来说,在进入到新路由前,我的菜单数据应该是准备好的。

qq_64522411的博客 748

轴承寿命预测实战:手把手教你用IEEE PHM2012数据集训练模型(附Python代码)

本文详细介绍了如何利用IEEE PHM2012数据集构建轴承剩余寿命预测模型,从数据预处理、特征工程到LSTM模型训练与部署,提供了完整的Python代码实现。通过实战案例,帮助读者掌握预测性维护中的关键技术,提升工业设备的运行安全与效率。

weixin_29186249的博客 311

PyMiMi实战指南:midas_api配置与连接测试详解

本文详细介绍了PyMiMi库中midas_api的配置与连接测试全流程。从环境准备、API密钥获取,到核心的url_cfg配置函数使用,再到通过test_url进行连接验证,提供了清晰的步骤和代码示例。文章重点解析了配置原理、常见错误排查方法(如401错误、连接超时),并强调了API密钥的安全性管理,帮助用户稳固建立Python与Midas Civil NX之间的自动化通信桥梁。

weixin_29044713的博客 707

vue项目如何刷新当前页面

想必大家在刨坑vue的时候也遇到过下面情形:比如在删除或者增加一条记录的时候希望当前页面可以重新刷新或者如下面这种: 如果希望点击确定的时候,Dialog 对话框关闭的时候,当前http://localhost:9530/#/supplier/supplierAll页面可以重新刷新下 那么表格的数据可以重新加载,Dialog 对话框设置的数据可以在确定后刷新出现在页面上 这时候我们最直接...

365

围绕国产化操作系统以及人大金仓地理空间库的GIS的解决方案,含超详细部署步骤以及与QGIS,GeoServer,PostGlS Shapefile lmport/Export Manager的连接步骤

人大金仓软件 2.1软件的下载以及授权的相关文件插件 2.2上传至虚拟机 2.3KingbaseES V8R6数据库部署过程 2.3.1创建安装用户 2.3.2赋权 2.3.3.创建安装目录且赋权 2.3.4 准备挂载 2.4kingbase安装方法 2.7postgis安装 3 人大金仓数据库与QGIS的连接 4 人大金仓数据库与PostGlS Shapefile lmport/Export Manager的连接 5 人大金仓数据库与geoserver的连接

挣钱花388的博客 2591

Vue-router 页面跳转空白问题

问题描述 今天在写vue项目时遇到一个小问题,在做页面跳转的时候,跳转到某个页面时,突然页面内容部分全部变成空白。大概类似这种情况,啥也没有。 问题原因 在反复检查发现,在组件中template中有2个div标签,大概如这样 <template> <div>...</div> <div>...</div> <template> 写Vue的应该都知道,一个template中只能放置一个div,不能并列...

Tsinbo1314的博客 3975

YOLOv11改进 | 上采样篇 | YOLOv11引入DySample轻量级动态上采样器

虽然最近的基于内核的动态上采样器(如CARAFE、FADE和SAPA)的性能提升令人印象深刻,但它们引入了大量工作负载,主要是由于耗时的动态卷积和用于生成动态内核的额外子网。DySample模块的设计旨在解决现有动态上采样器的高计算开销和复杂性问题,同时提供更好的性能和效率。到此本文的正式分享内容就结束了,在这里给大家推荐我的YOLOv11改进有效涨点专栏,本专栏目前为新开的,后期我会根据各种前沿顶会进行论文复现,也会对一些老的改进机制进行补充,如果大家觉得本文帮助到你了,订阅本专栏,关注后续更多的更新~

tsg6698的博客 3129

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

vue中的路由跳转了,url改变,但是页面为空白,没有到达指定文件

问题描述: 初始路径 跳转之后: 然后当前页面全白了,到了一个空页面 如果输入一个没有对应文件的url时也会出现这种情况,比如: 我的目录下并没有mycollect文件 我的路由书写过程: 1.在router下的index.js中声明路由 const myinterest = () => import('@/my/myinterest') 2.还在该文件下注册路由 { // 这是链接上的显示路径 path: '/myinterest', componen

m0_47265814的博客 2万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Vue页面跳转,页面为空白的问题

记录一下页面跳转,页面为空白的问题,原本,我登录成功后想跳转到index首页的,然后我死命的点击它,它死活就是显示空白页面,后面发现需要在router文件夹中的index.js中配置其路由,而且注意,其路由不能写在调用父路由的上面,否则不生效,index.js配置。

blacksix的博客 4726

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

vue项目中跳转到新页面的方式

是一个用于获取当前页面 URL 或让浏览器跳转到新 URL 的重要方法,是 window.location 对象的属性。同时,当通过将 URL 指定给 window.location.href 时,可以让浏览器跳转到新的 URL。,唯一不同的是,它在导航时不会向 history 添加新记录,正如它的名字所暗示的那样——它取代了当前的条目。点击按钮后,先通过接口获取到要跳转的URL地址,然后再进行跳转,该跳转是从一个系统的A端跳转到B端。open() 方法用于打开一个新的浏览器窗口或查找一个已命名的窗口。

发渐稀的博客 1万+

html meta 跳转 白屏,vue使用keepAlive之后页面空白白屏?route和router什么区别呢?...

问题描述:vue使用keepAlive之后页面空白,报错:TypeError: Cannot read property 'keepAlive' of undefined。。。为了实现页面跳转之后,返回还显示用户看过的页面/筛选过的数据,就在项目中加入了keepAlive,没想到第一次使用就遇到了,度娘都没有发生过的bug:“TypeError: Cannot read property 'kee...

weixin_42361733的博客 2678

Vue项目中刷新当前页面的四种方法

Vue项目中刷新当前页面的四种方法前记刷新当前页面的四种方法this.$router.go(0)location.reload()跳转空白页再跳回原页面使用provide / inject组合控制的显示(推荐) 前记 有时候,在当前页面添加或删除一条记录的时候希望当前页面可以刷新一下,从而更新页面数据。 我们知道,在路由到另一页面的时候会重新加载该页面,相当于刷新了页面,但是使用vue-router重新路由到当前页面,页面是不进行刷新的。下面介绍几种刷新页面的方法。 刷新当前页面的四种方法 this.$ro

u012211003的博客 5万+

Vue3中,router配置后,路径跳转没问题,但页面空白,原因总结

router配置后,路径跳转没问题,但页面空白,排查后发现是createWebHashHistory调用忘记加括号

2201_76036128的博客 1526

vue项目刷新当前页面的三种方法

本文介绍了vue项目刷新当前页面的三种方法,本文图文并茂给大家介绍的非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下。 想必大家在刨坑vue的时候也遇到过下面情形:比如在删除或者增加一条记录的时候希望当前页面可以重新刷新或者如下面这种: 如果希望点击确定的时候,Dialog 对话框关闭的时候,当前http://localhost:9530/#/supplier/supplierAll页面可以重新刷新下 那么表格的数据可以重新加载,Dialog 对话框设置的数据可以在确定后刷新出现在页面上

Free雅轩的博客 7万+

解决使用Vue Router实现页面跳转时的过渡动画出现的页面加载空白的问题

解决使用Vue Router实现页面跳转时的过渡动画出现的页面加载空白的问题

duduanwang的博客 608

vue打包后项目,页面刷新之后一片空白

小白:记使用vue遇到的问题及解决办法 vue项目,打包之后页面能正常显示,但是刷新之后页面就一片空白什么都没有,也不报错。所有页面都能正常打开,都是刷新就一片空白。去网上搜索是因为router中的mode的模式问题,因为之前觉得url中的#好看起来不是很好,就想着去掉,没想到项目上线之后刷新页面出现了问题。 因为项目中的mode设置的是history,所以会出现这种情况,默认下是hash模式...

我的个人博客 3887

Vue 之 页面刷新、跳转方法

一、页面刷新 1、window.location.reload();和this.$router.go(0) 偶尔页面会闪烁一下,用户体验不好 2、provide/inject :不会出现空白页面 App.vue中声明reload方法,是使用isRouterAlive来控制路由的显示和隐藏,从而实现当前页面再加载了一遍,实现了刷新 # (1)在App.vue页面中声明reload方法: ...

weixin_44756169的博客 4224

vue3切换路由时页面空白问题解决办法

Vue3页面空白问题解决方案:1)为router-view添加key属性:key="$route.fullPath"解决保存后显示空白问题;2)检查根组件是否被div包裹且template下无直接注释,确保正确代码结构。两种方法分别针对不同场景下的页面空白现象,修改后需刷新页面验证效果。注意修改位置为layout组件而非App.vue,避免导航标签异常。 vue3切换路由后页面不报错显示空白,刷新后显示正常 :key="$route.fullPath"

muzidigbig的博客 790
上一篇: Vue2项目练习|后台管理问题总结
NeverthelessEnd
博客等级 码龄9年 18粉丝 10原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值