V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Joseph0717
V2EX  ›  Vue.js

付费请教解决 vue-router 问题,后台框架 Vue Antd Admin

  •  
  •   Joseph0717 · 2021-02-09 17:33:19 +08:00 · 3450 次点击
    这是一个创建于 1378 天前的主题,其中的信息可能已经有所发展或是发生改变。

    问题:动态添加的路由页面刷新后 404 如图:ydEHPI.png

    我的操作: 1,router/config.js 配置了静态的几个基础路由 ydVaFA.png

    2,用户登录成功动态添加路由和菜单 ydVz6K.png ydVwWt.png

    3,路由守卫,刷新页面再次获取用户路由和菜单 ydVfWq.png ydV5lV.png

    4,一顿操作,问题还是 404

    18 条回复    2021-02-22 08:50:57 +08:00
    Joseph0717
        1
    Joseph0717  
    OP
       2021-02-09 17:35:59 +08:00
    救救孩子吧
    xm726
        2
    xm726  
       2021-02-09 17:48:34 +08:00
    把 404 放到最后去
    ni9ht
        3
    ni9ht  
       2021-02-09 17:50:31 +08:00
    先看下页面刷新后有没有走你的 else 里面去请求获取数据,如果有请求获取数据就看看路由有没有添加进去
    InternetExplorer
        4
    InternetExplorer  
       2021-02-09 17:51:11 +08:00
    把 404 的路由先拿掉呢?
    你这 const/let/var 乱用,看的急死了
    freakJacker
        5
    freakJacker  
       2021-02-09 17:56:13 +08:00
    把 404 放到最后即可
    ni9ht
        6
    ni9ht  
       2021-02-09 17:58:47 +08:00
    没注意看你 404 的写法,可以试试上面说的
    OHyn
        7
    OHyn  
       2021-02-09 18:03:19 +08:00
    打印一下钩子的入参中的 to,看一下 to.redirectedFrom 或 to.path,可能有惊喜。我印象中,按 f5 刷新,可能已经被重定向到 404 页面了,那就得 next({ path: to.redirectedFrom || to.path })。
    rodrick
        8
    rodrick  
       2021-02-09 20:50:24 +08:00
    先看下刷新后的 routers 是啥,官方我记得好像说不推荐 this.$router.options.routes 直接改,不确定这样会不会有问题
    Joseph0717
        9
    Joseph0717  
    OP
       2021-02-09 20:55:16 +08:00
    @xm726 404 放到最后试过了
    @ni9ht 数据可以获取到,404 页面打印路由都有
    @InternetExplorer 404 拿掉报错
    @OHyn to.path 是有的
    谢谢各位,我继续研究吧
    Joseph0717
        10
    Joseph0717  
    OP
       2021-02-09 21:26:09 +08:00
    @rodrick 刷新后 404 页打印 router 是守卫里获取到的路由
    OHyn
        11
    OHyn  
       2021-02-10 00:45:16 +08:00
    @Joseph0717 在 404 页面打印路由,路由都有的话,着重排查离开钩子时目标页面的路径,你开 devtool 看一下页面跳转的记录,有迹可循的。
    chenluo0429
        12
    chenluo0429  
       2021-02-10 08:41:08 +08:00 via Android
    动态路由添加到了最后,路径被 404 的*优先匹配了?我记得 addRoutes 蛮多坑的
    karott7
        13
    karott7  
       2021-02-10 09:24:45 +08:00
    404 路由放最后面,添加路由用 addRoutes 方法
    lzhcscs
        14
    lzhcscs  
       2021-02-10 09:34:11 +08:00
    之前有碰到过,404 页面用 addRouter 再添加一次
    router.addRoutes([{ path: '*',name: 'error_404',component: err404 }])
    serene11c
        15
    serene11c  
       2021-02-10 11:06:19 +08:00
    404 放在动态添加的路由的最后,静态的不用放
    https://github.com/vuejs/vue-router/issues/1176
    akcode
        16
    akcode  
       2021-02-10 11:11:27 +08:00
    路由又不会经常变,还不如全部写成静态的,做路由权限。
    Unitent
        17
    Unitent  
       2021-02-10 11:35:56 +08:00
    https://blog.csdn.net/Jack7757/article/details/110315475 看了还不懂记得加我微信 Unitent_
    a4page
        18
    a4page  
       2021-02-22 08:50:57 +08:00
    动态路由要注意一个问题,看是否是 webpack tree shaking,没把对应路由组件打包进去
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5362 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 51ms · UTC 07:36 · PVG 15:36 · LAX 23:36 · JFK 02:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.