import { Component, Suspense, type ErrorInfo, type ReactNode } from 'react' import { Navigate, Route, Routes } from 'react-router-dom' import { appRoutes, type AppRoute } from './appRoutes' import { Layout } from './components/Layout' import { RequireAdmin, RequireAuth } from './components/RequireAuth' import { LoginPage } from './pages/LoginPage' const Loading = () =>

加载中…

class AppErrorBoundary extends Component<{ children: ReactNode }, { hasError: boolean }> { state = { hasError: false } static getDerivedStateFromError() { return { hasError: true } } componentDidCatch(error: Error, info: ErrorInfo) { console.error('MeBox UI crashed', error, info) } render() { if (this.state.hasError) { return (

页面加载失败

当前页面遇到异常,刷新后会重新加载资源和登录状态。

返回首页
) } return this.props.children } } function routeElement(route: AppRoute) { if (!route.adminOnly) return route.element return {route.element} } export default function App() { return ( }> } /> } > {appRoutes.map((route) => ( ))} } /> ) }