import React from 'react'; import { Layout, Nav } from '@douyinfe/semi-ui'; import { BrowserRouter, useLocation, useNavigate, Routes, Route, Navigate } from 'react-router-dom'; import { IconSemiLogo } from '@douyinfe/semi-icons'; const { Header, Sider, Content } = Layout; const RouterConfig = { config: { itemKey: '/config', text: 'Config', items: [ { itemKey: '/config/ability', text: 'Ability', items: [ { itemKey: '/config/ability/management', text: 'Ability management', }, ], }, { itemKey: '/config/task', text: 'Task', items: [ { itemKey: '/config/task/management', text: 'Word management', }, ], }, ], }, distribution: { itemKey: '/distribution', text: 'Distribution', items: [ { itemKey: '/distribution/queue', text: 'Queue', items: [ { itemKey: '/distribution/queue/management', text: 'Config management', }, ], }, ], }, }; const AppHeader = () => { const location = useLocation(); const navigate = useNavigate(); const selectedKeys = React.useMemo( () => [ location.pathname .split('/') .slice(0, 2) .join('/'), ], [location.pathname] ); const HeaderItems = React.useMemo( () => Object.values(RouterConfig).map(option => ( { if (option.itemKey) { navigate(option.itemKey); } }} /> )), [navigate] ); return (
); }; const AppSider = () => { const location = useLocation(); const selectedFirstLevelKey = React.useMemo(() => location.pathname.split('/')[1], [location.pathname]); const siderItems = React.useMemo(() => { const selectedKeyConfig = RouterConfig[selectedFirstLevelKey]; return selectedKeyConfig?.items ?? []; }, [selectedFirstLevelKey]); const selectedKey = React.useMemo(() => [location.pathname], [location.pathname]); return (