12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- import {getRoleMenu} from '@apis';
- import {menuStore, userStore} from '@stores';
- import {useQuery} from '@tanstack/react-query';
- import {sortMenu} from '@utils';
- import {useMemo} from 'react';
- import {useStore} from 'zustand';
- export function useMenu() {
- const setMenus = useStore(menuStore, state => state.setMenu);
- const menus = useStore(
- userStore,
- state => state.menu,
- );
- const {data} = useQuery(
- [getRoleMenu.name],
- async function() {
- if (!menus)
- throw new Error('未配置菜单信息');
- const data = await getRoleMenu();
- if (data.msg === '200') {
- setMenus(data.data);
- return data.data;
- }
- throw new Error(data.errMsg);
- },
- {
- suspense: true,
- },
- );
- const parseMenus = useMemo(function() {
- if (data)
- return sortMenu(data);
- return [];
- }, [data]);
- return parseMenus;
- }
|