1.第一步在菜单挂载时给openKeys赋值所有菜单项
SimpleMenu组件中/src/SimpleMenu.vue
import { onMounted } from 'vue'; onMounted(() => { openAllKeys() })
2.第二步定义openAllkeys方法
SimpleMenu组件中/src/useOpenkeys.ts
import { getAllSubMenuPaths} from '/@/router/helper/menuHelper';export function useOpenKeys( menuState: MenuState, menus: Ref<MenuType[]>, accordion: Ref<boolean>, mixSider: Ref<boolean>, collapse: Ref<boolean>, ) { const debounceOpenAllKeys = useDebounceFn(openAllKeys, 50); async function openAllKeys() { const native = !mixSider.value; const menuList = toRaw(menus.value); useTimeoutFn( () => { if (menuList?.length === 0) { menuState.activeSubMenuNames = []; menuState.openNames = []; return; } const keys = getAllSubMenuPaths(menuList) menuState.openNames = keys }, 30, native, ); } return { openAllKeys: debounceOpenAllKeys }; }
3.定义getAllSubMenuPaths 方法 /@/router/helper/menuHelper
//获取所有menu keys export function getAllSubMenuPaths(menus: Menu[]) { let result: string[] = []; menus.forEach((item) => { if (item.children != null && item.children?.length > 0) { result.push(item.path); result.push(...getAllSubMenuPaths(item.children)); } }); return result; }