@@ -4,8 +4,6 @@ import getPageTitle from '@/utils/page'
4
4
import router from '@/router'
5
5
import Nprogress from 'nprogress'
6
6
7
- let asyncRouterFlag = 0
8
-
9
7
const whiteList = [ 'Login' , 'Init' ]
10
8
11
9
const getRouter = async ( userStore ) => {
@@ -38,6 +36,7 @@ async function handleKeepAlive(to) {
38
36
}
39
37
40
38
router . beforeEach ( async ( to , from ) => {
39
+ const routerStore = useRouterStore ( )
41
40
Nprogress . start ( )
42
41
const userStore = useUserStore ( )
43
42
to . meta . matched = [ ...to . matched ]
@@ -47,8 +46,7 @@ router.beforeEach(async(to, from) => {
47
46
document . title = getPageTitle ( to . meta . title , to )
48
47
if ( whiteList . indexOf ( to . name ) > - 1 ) {
49
48
if ( token ) {
50
- if ( ! asyncRouterFlag && whiteList . indexOf ( from . name ) < 0 ) {
51
- asyncRouterFlag ++
49
+ if ( ! routerStore . asyncRouterFlag && whiteList . indexOf ( from . name ) < 0 ) {
52
50
await getRouter ( userStore )
53
51
}
54
52
// token 可以解析但是却是不存在的用户 id 或角色 id 会导致无限调用
@@ -71,8 +69,7 @@ router.beforeEach(async(to, from) => {
71
69
// 不在白名单中并且已经登录的时候
72
70
if ( token ) {
73
71
// 添加flag防止多次获取动态路由和栈溢出
74
- if ( ! asyncRouterFlag && whiteList . indexOf ( from . name ) < 0 ) {
75
- asyncRouterFlag ++
72
+ if ( ! routerStore . asyncRouterFlag && whiteList . indexOf ( from . name ) < 0 ) {
76
73
await getRouter ( userStore )
77
74
if ( userStore . token ) {
78
75
return { ...to , replace : true }
0 commit comments