next()
放行
next(’/XXX’)
无限拦截
beforeEach((to, from, next) => {
beforeEach(('/XXX', from, next) => {
beforeEach(('/XXX', from, next) => {
beforeEach(('/XXX', from, next) => {
beforeEac... // 一直循环下去...... , 因为我们没有使用 next() 放行
}
}
}
}
next({ …to, replace: true })
**…to:**无限访问目标路由(通常用于动态添加路由)
**replace: true :**本次操作后,不能通过浏览器后退按钮,返回前一个路由。
在addRoutes()之后第一次访问被添加的路由会白屏,这是因为刚刚addRoutes()就立刻访问被添加的路由,然而此时addRoutes()没有执行结束,因而找不到刚刚被添加的路由导致白屏。因此需要从新访问一次路由才
行。
如果参数to不能找到对应的路由的话,就再执行一次beforeEach((to, from, next)直到其中的next({ …to})能找到对应的路由为止。
因此你还需要确保在当addRoutes()已经完成时,所执行到的这一次beforeEach((to, from, next)中有一个正确的next()方向出口。