Skip to content

Commit 531bfaf

Browse files
committed
optimize(projects): optimize menu selectedKey
1 parent c3f1f69 commit 531bfaf

File tree

6 files changed

+32
-63
lines changed

6 files changed

+32
-63
lines changed

src/layouts/context/index.ts

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ export const { setupStore: setupMixMenuContext, useStore: useMixMenuContext } =
88
function useMixMenu() {
99
const route = useRoute();
1010
const routeStore = useRouteStore();
11+
const { selectedKey } = useMenu();
1112

1213
const activeFirstLevelMenuKey = ref('');
1314

@@ -16,12 +17,7 @@ function useMixMenu() {
1617
}
1718

1819
function getActiveFirstLevelMenuKey() {
19-
const { hideInMenu, activeMenu } = route.meta;
20-
const name = route.name as string;
21-
22-
const routeName = (hideInMenu ? activeMenu : name) || name;
23-
24-
const [firstLevelRouteName] = routeName.split('_');
20+
const [firstLevelRouteName] = selectedKey.value.split('_');
2521

2622
setActiveFirstLevelMenuKey(firstLevelRouteName);
2723
}
@@ -68,3 +64,20 @@ function useMixMenu() {
6864
getActiveFirstLevelMenuKey
6965
};
7066
}
67+
68+
export function useMenu() {
69+
const route = useRoute();
70+
71+
const selectedKey = computed(() => {
72+
const { hideInMenu, activeMenu } = route.meta;
73+
const name = route.name as string;
74+
75+
const routeName = (hideInMenu ? activeMenu : name) || name;
76+
77+
return routeName;
78+
});
79+
80+
return {
81+
selectedKey
82+
};
83+
}

src/layouts/modules/global-menu/modules/horizontal-menu.vue

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,16 @@
11
<script setup lang="ts">
2-
import { computed } from 'vue';
3-
import { useRoute } from 'vue-router';
42
import { GLOBAL_HEADER_MENU_ID } from '@/constants/app';
53
import { useRouteStore } from '@/store/modules/route';
64
import { useRouterPush } from '@/hooks/common/router';
5+
import { useMenu } from '../../../context';
76
87
defineOptions({
98
name: 'HorizontalMenu'
109
});
1110
12-
const route = useRoute();
1311
const routeStore = useRouteStore();
1412
const { routerPushByKeyWithMetaQuery } = useRouterPush();
15-
16-
const selectedKey = computed(() => {
17-
const { hideInMenu, activeMenu } = route.meta;
18-
const name = route.name as string;
19-
20-
const routeName = (hideInMenu ? activeMenu : name) || name;
21-
22-
return routeName;
23-
});
13+
const { selectedKey } = useMenu();
2414
</script>
2515

2616
<template>

src/layouts/modules/global-menu/modules/horizontal-mix-menu.vue

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,20 @@
11
<script setup lang="ts">
2-
import { computed } from 'vue';
3-
import { useRoute } from 'vue-router';
42
import { GLOBAL_HEADER_MENU_ID, GLOBAL_SIDER_MENU_ID } from '@/constants/app';
53
import { useAppStore } from '@/store/modules/app';
64
import { useThemeStore } from '@/store/modules/theme';
75
import { useRouterPush } from '@/hooks/common/router';
86
import FirstLevelMenu from '../components/first-level-menu.vue';
9-
import { useMixMenuContext } from '../../../context';
7+
import { useMenu, useMixMenuContext } from '../../../context';
108
119
defineOptions({
1210
name: 'HorizontalMixMenu'
1311
});
1412
15-
const route = useRoute();
1613
const appStore = useAppStore();
1714
const themeStore = useThemeStore();
18-
const { allMenus, childLevelMenus, activeFirstLevelMenuKey, setActiveFirstLevelMenuKey } = useMixMenuContext();
1915
const { routerPushByKeyWithMetaQuery } = useRouterPush();
20-
21-
const selectedKey = computed(() => {
22-
const { hideInMenu, activeMenu } = route.meta;
23-
const name = route.name as string;
24-
25-
const routeName = (hideInMenu ? activeMenu : name) || name;
26-
27-
return routeName;
28-
});
16+
const { allMenus, childLevelMenus, activeFirstLevelMenuKey, setActiveFirstLevelMenuKey } = useMixMenuContext();
17+
const { selectedKey } = useMenu();
2918
3019
function handleSelectMixMenu(menu: App.Global.Menu) {
3120
setActiveFirstLevelMenuKey(menu.key);

src/layouts/modules/global-menu/modules/reversed-horizontal-mix-menu.vue

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script setup lang="ts">
2-
import { computed, ref, watch } from 'vue';
2+
import { ref, watch } from 'vue';
33
import { useRoute } from 'vue-router';
44
import type { RouteKey } from '@elegant-router/types';
55
import { SimpleScrollbar } from '@sa/materials';
@@ -8,7 +8,7 @@ import { useAppStore } from '@/store/modules/app';
88
import { useThemeStore } from '@/store/modules/theme';
99
import { useRouteStore } from '@/store/modules/route';
1010
import { useRouterPush } from '@/hooks/common/router';
11-
import { useMixMenuContext } from '../../../context';
11+
import { useMenu, useMixMenuContext } from '../../../context';
1212
1313
defineOptions({
1414
name: 'ReversedHorizontalMixMenu'
@@ -18,23 +18,15 @@ const route = useRoute();
1818
const appStore = useAppStore();
1919
const themeStore = useThemeStore();
2020
const routeStore = useRouteStore();
21+
const { routerPushByKeyWithMetaQuery } = useRouterPush();
2122
const {
2223
firstLevelMenus,
2324
childLevelMenus,
2425
activeFirstLevelMenuKey,
2526
setActiveFirstLevelMenuKey,
2627
isActiveFirstLevelMenuHasChildren
2728
} = useMixMenuContext();
28-
const { routerPushByKeyWithMetaQuery } = useRouterPush();
29-
30-
const selectedKey = computed(() => {
31-
const { hideInMenu, activeMenu } = route.meta;
32-
const name = route.name as string;
33-
34-
const routeName = (hideInMenu ? activeMenu : name) || name;
35-
36-
return routeName;
37-
});
29+
const { selectedKey } = useMenu();
3830
3931
function handleSelectMixMenu(key: RouteKey) {
4032
setActiveFirstLevelMenuKey(key);

src/layouts/modules/global-menu/modules/vertical-menu.vue

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { useThemeStore } from '@/store/modules/theme';
77
import { useRouteStore } from '@/store/modules/route';
88
import { useRouterPush } from '@/hooks/common/router';
99
import { GLOBAL_SIDER_MENU_ID } from '@/constants/app';
10+
import { useMenu } from '../../../context';
1011
1112
defineOptions({
1213
name: 'VerticalMenu'
@@ -17,18 +18,10 @@ const appStore = useAppStore();
1718
const themeStore = useThemeStore();
1819
const routeStore = useRouteStore();
1920
const { routerPushByKeyWithMetaQuery } = useRouterPush();
21+
const { selectedKey } = useMenu();
2022
2123
const inverted = computed(() => !themeStore.darkMode && themeStore.sider.inverted);
2224
23-
const selectedKey = computed(() => {
24-
const { hideInMenu, activeMenu } = route.meta;
25-
const name = route.name as string;
26-
27-
const routeName = (hideInMenu ? activeMenu : name) || name;
28-
29-
return routeName;
30-
});
31-
3225
const expandedKeys = ref<string[]>([]);
3326
3427
function updateExpandedKeys() {

src/layouts/modules/global-menu/modules/vertical-mix-menu.vue

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { useRouteStore } from '@/store/modules/route';
99
import { useRouterPush } from '@/hooks/common/router';
1010
import { $t } from '@/locales';
1111
import { GLOBAL_SIDER_MENU_ID } from '@/constants/app';
12-
import { useMixMenuContext } from '../../../context';
12+
import { useMenu, useMixMenuContext } from '../../../context';
1313
import FirstLevelMenu from '../components/first-level-menu.vue';
1414
import GlobalLogo from '../../global-logo/index.vue';
1515
@@ -31,6 +31,7 @@ const {
3131
getActiveFirstLevelMenuKey
3232
//
3333
} = useMixMenuContext();
34+
const { selectedKey } = useMenu();
3435
3536
const inverted = computed(() => !themeStore.darkMode && themeStore.sider.inverted);
3637
@@ -56,15 +57,6 @@ function handleResetActiveMenu() {
5657
}
5758
}
5859
59-
const selectedKey = computed(() => {
60-
const { hideInMenu, activeMenu } = route.meta;
61-
const name = route.name as string;
62-
63-
const routeName = (hideInMenu ? activeMenu : name) || name;
64-
65-
return routeName;
66-
});
67-
6860
const expandedKeys = ref<string[]>([]);
6961
7062
function updateExpandedKeys() {

0 commit comments

Comments
 (0)