vue-router,路由按需加载,页面加载完成后,this.$route 获取不到

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue-router,路由按需加载,页面加载完成后,this.$route 获取不到相关的知识,希望对你有一定的参考价值。

参考技术A 1.问题描述

页面中需要路由匹配给当前路由高亮,所以就需要获取当前路由的path,但是发现获取不到

在 mounted 中打印 $route:

获取到的值不对。path 和 fullPath ,明明应该有值,但只有一个 "/" 。

可能在 mounted 中router 的初始化还没有完成,所以取到的是一个初始默认值。

加一个延时试试:

可以发现,有时能获取到,有时获取不到,延时到2000以后,目前测试的是都能获取到。

问题推测:

vue-router 初始化是需要一段时间的,在完成之前,取值只能拿到初始的默认值。

在 mounted 中 router 初始化可能还没有完成。

2.用onReady解决

上面用定时器延迟了1000ms,有时能取到 router,于是加长延时时间到2000解决,但是,真正要解决这个问题,肯定不能用定时器,因为延迟的时间无法确定:

长了,影响体验

短了,可能router初始化还没完成

查阅官网API,希望官方提供了 初始化完成时的回调方法 ,果然找到了: onReady

经测试,通过。

以上是关于vue-router,路由按需加载,页面加载完成后,this.$route 获取不到的主要内容,如果未能解决你的问题,请参考以下文章

vue-router路由懒加载

vue-router 按需加载

vue-router和webpack懒加载,页面性能优化篇

vue-router路由懒加载

vue项目实现路由按需加载(路由懒加载)的3种方式

vue项目实现路由按需加载的3种方式