问题描述:

vue-router4.0 版本在beforeEach使用addRouter动态添加路由后,路由没有生效。控制台发出警告[Vue Router warn]: No match found for location with path "/home",使用roter.getRoutes()查看已经挂载的路有也已经挂载上去

 解决方法:

查看官网,官网在addRoute 方法下有一条提示:

请注意,添加路由并不会触发新的导航。也就是说,除非触发新的导航,否则不会显示所添加的路由。

这句话说明了,如果当前访问的地址和动态添加的路由地址是一致的,不会触发新的导航。

vue-router4.x官网-动态路由也对这个问题进行了阐述说明:动态路由主要通过两个函数实现。router.addRoute() 和 router.removeRoute()。它们只注册一个新的路由,也就是说,如果新增加的路由与当前位置相匹配,就需要你用 router.push() 或 router.replace() 来手动导航,才能显示该新路由。

官网给出了解决方案, 在动态添加路由之后且添加的动态路由地址和当前访问的地址一致,使用router.push() 或router.reolace() 手动导航。

Logo

基于 Vue 的企业级 UI 组件库和中后台系统解决方案,为数万开发者服务。

更多推荐