Vue-Router清空路由

最近项目中发现一个小bug,登录账号添加路由到vue-router后,登录新账号没有清空之前到路由。本来想到退出登录过程中通过location.reload()清空,但是公司框架将/login路由设置为白名单,所以用户可以不退出登录直接跳转到login页面登录新路由,所以最终在获取路由之前将路由清空。

查看Vue Router的官方文档,发现提供了removeRoute这个方法,由于路由全是动态获取,得先把所有路由拿到再依次去remove掉太过麻烦且效率低,而且在remove之后使用过程中出现了点小问题,就没有使用该方法,去网络上搜索Vue Router清空路由的方式,得到了如下答案:

1
2
3
4
5
6
7
8
9
10
11
12
export function resetRouter (router) {
const createRouter = () =>
new Router({
mode: 'history',
base: process.env.BASE_URL,
scrollBehavior: () => ({ y: 0 }),
// 初始路由列表
routes: constantRouterMap
})
// 用初始化的matcher替换当前router的matcher
router.matcher = createRouter().matcher
}

我们将当前的router传入resetRouter函数通过matcher重新赋值的方式将router重新初始化一边,就可以清空动态加入的一些路由,只保留最初始的路由了。

作者

胡兆磊

发布于

2022-08-02

更新于

2022-10-23

许可协议