Vben admin菜单怎么默认打开时是全部展开的?

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;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值