当使用 Vue Router 时,beforeEach函数会在每个路由切换前执行一次,它的返回值会影响路由切换的行为。beforeEach函数的执行次数是由以下因素决定的:
- 次数与路由切换次数相等,每个路由切换都会执行一次beforeEach函数。
- 次数与异步加载路由组件次数相等,如果使用了异步路由组件,那么每个异步路由组件的加载都会执行一次 beforeEach函数。
因此,出现 beforeEach执行两次的场景,可能是两种原因之一:
1. 路由切换时,一个异步路由组件正在加载,导致 beforeEach函数被执行了两次。
2. 代码中存在多个路由实例或者路由拦截器,导致每个路由拦截器都执行了一遍 beforeEach函数,从而执行了两次。