import React from 'react'; import api from '@/api-client'; import { useRequest, useLocation, useHistory, Redirect } from 'umi'; import get from 'lodash/get'; import { TopMenuLayout } from './TopMenuLayout'; import { SideMenuLayout } from './SideMenuLayout'; import Page from './Page'; import pathToRegexp from 'path-to-regexp' import { Spin } from '@nocobase/client'; export function AdminLoader(props: any) { const { data = [], error, loading, run } = useRequest(() => api.resource('menus').getTree()); (window as any).reloadMenu = async () => { await run(); }; const { lastPage: { path } } = props; const location = useLocation(); const match = pathToRegexp(`${path}/:path?/:rowId?/:tabId?`).exec(location.pathname); const pageName = match[1]||null; const history = useHistory(); const currentRowId = match[2]||null; const items = data // .filter(item => item.type !== 'group' || (item.children && item.children.length)) ; const sideMenu = items.find(item => { if (item.paths && item.paths.includes(pageName)) { return true; } return false; }); console.log({pageName, sideMenu}) if (loading) { return } if (!pageName) { return ; } return ( <> {sideMenu ? ( ) : ( )} ); } export default AdminLoader;