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