问答

Vue-router addRoutes添加路由后还是跳转404

作者:admin 2021-07-15 我要评论

router.js export const constantRoutes: RouteConfig[] = [ { path: '/login', component: () = import(/* webpackChunkName: "login" */ '@/views/common/logi...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

router.js

export const constantRoutes: RouteConfig[] = [
  {
    path: '/login',
    component: () => import(/* webpackChunkName: "login" */ '@/views/common/login.vue'),
    meta: { hidden: true }
  },
  {
    path: '/404',
    component: () => import(/* webpackChunkName: "404" */ '@/views/common/404.vue'),
    meta: { hidden: true }
  },
  {
    path: '/',
    component: Layout,
    redirect: '/home',
    children: [
      {
        path: 'home',
        component: () => import('@/views/common/home.vue'),
        name: 'Home',
        meta: { title: 'home', icon: 'nav-home' }
      }
    ]
  },
  { path: '*', redirect: '/404', meta: { hidden: true } }
]

路由全局拦截

import consumeRoutes from './router/consume'
router.beforeEach(async(to: Route, from: Route, next: any) => {
  NProgress.start()
  if (getToken()) {
    if (AppModule.appList.length === 0) {
      router.addRoutes(consumeRoutes);
      console.log('router', router)
      next()
    } else {
      next()
    }
  } else {
    // Has no token
    if (whiteList.indexOf(to.path) !== -1) {
      next()
    } else {
      next(`/login?redirect=${to.path}`)
      NProgress.done()
    }
  }
})

上面用到的动态加载的路由配置consume

import { RouteConfig } from 'vue-router'
import Layout from '@/layout/index.vue'

const consumeRoutes: RouteConfig[] = [
  {
    path: '/device',
    component: Layout,
    redirect: '/list',
    children: [
      {
        path: 'list',
        component: () => import('@/views/consume/device/index.vue'),
        name: 'Device',
        meta: { title: 'device', icon: 'nav-deviceManage' }
      }
    ]
  }
]

export default consumeRoutes

全局拦截已经动态addRoutes添加了/device/list这个路由地址,但是页面刷新的时候,还是会跳转到404页面。
求指教啊

###

consumeRoutes里面path: '/device'重定向到/list里了,而/list这个路径没有匹配到,所以仍然跳到404页面。
补充。
当使用通配符路由时,请确保路由的顺序是正确的,也就是说含有通配符的路由应该放在最后。

###

image.png

试一下,其他地方不要改

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • Vue-router addRoutes添加路由后还是跳

    Vue-router addRoutes添加路由后还是跳

  • react子组件接收到了父组件传来的值,

    react子组件接收到了父组件传来的值,

  • tomcat7解压war包后lib内容缺失

    tomcat7解压war包后lib内容缺失

  • antdesign中如何实现合并单元格并且渲

    antdesign中如何实现合并单元格并且渲

腾讯云代理商
海外云服务器