最近在整改动态路由的问题,不少坑困惑了我很久
废话不多说直接上坑:
第一部坑:router.addRoute()后的路由,router.options.routes是获取不到最新路由的,误导我一直认为添加路由失败,添加不进去,其实已经存在了!! router.getRoutes()方法可以查看
第二部坑:在路由守卫中,错误的next()会导致循环调用导致内存溢出,所以要合理的正确的写判断条件和next(), 为此我研究了很久next()
// next() next('/') next({...to,repalce,true})
// 三个next意义都是不一样的 并不是next()都代表出口
// next(参数) 都代表中断当中的全局前置守卫,执行新的全局前置守卫
// 比如你以为直接进入登录页
beforeEach((to, from, next) => {
next('/login')
}
//实际上执行的过程代码
beforeEach((to, from, next) => {
beforeEach(('/logon', from, next) => {
beforeEach(('/logon', from, next) => {
beforeEach(('/logon', from, next) => {
beforeEach... // 一直循环下去...... , 因为我们没有使用 next() 放行
}
}
}
}
第三个坑:那就是404
很多项目都会写404 但是!! 404不能写在静态路由中,因为匹配动态路由时会直接进入404,就算你成功添加了动态路由,因为顺序 直接进入了404
所以! 404要在动态路由添加完毕后 再添加404
然后我终于成功了