From 728706deb2559bd2cd5319fb33b6bd90d351c908 Mon Sep 17 00:00:00 2001 From: yml2213 Date: Sat, 4 Jul 2026 18:10:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=89=8D=E7=AB=AF=E8=B7=AF=E7=94=B1=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E6=87=92=E5=8A=A0=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/frontend/src/App.tsx | 65 +++++++++++++++++++++++++--------------- 1 file changed, 41 insertions(+), 24 deletions(-) diff --git a/web/frontend/src/App.tsx b/web/frontend/src/App.tsx index c4361fc..d27a68a 100644 --- a/web/frontend/src/App.tsx +++ b/web/frontend/src/App.tsx @@ -1,22 +1,35 @@ -import { useState, useCallback } from 'react'; +import { lazy, Suspense, useState, useCallback, type ReactNode } from 'react'; import { BrowserRouter, Routes, Route, Navigate } from 'react-router-dom'; -import { ConfigProvider, theme } from 'antd'; +import { ConfigProvider, Spin, theme } from 'antd'; import zhCN from 'antd/locale/zh_CN'; -import LoginPage from './pages/LoginPage'; -import MainLayout from './layouts/MainLayout'; -import DashboardPage from './pages/DashboardPage'; -import AccountsPage from './pages/AccountsPage'; -import AssignmentsPage from './pages/AssignmentsPage'; -import LoginTasksPage from './pages/LoginTasksPage'; -import ProxyPage from './pages/ProxyPage'; -import UsersPage from './pages/UsersPage'; -import CookiePage from './pages/CookiePage'; -import HuyaAccountsPage from './pages/HuyaAccountsPage'; -import HuyaTasksPage from './pages/HuyaTasksPage'; import { getUser } from './store/auth'; import { ThemeProvider } from './store/theme'; import { useTheme } from './store/useTheme'; +const LoginPage = lazy(() => import('./pages/LoginPage')); +const MainLayout = lazy(() => import('./layouts/MainLayout')); +const DashboardPage = lazy(() => import('./pages/DashboardPage')); +const AccountsPage = lazy(() => import('./pages/AccountsPage')); +const AssignmentsPage = lazy(() => import('./pages/AssignmentsPage')); +const LoginTasksPage = lazy(() => import('./pages/LoginTasksPage')); +const ProxyPage = lazy(() => import('./pages/ProxyPage')); +const UsersPage = lazy(() => import('./pages/UsersPage')); +const CookiePage = lazy(() => import('./pages/CookiePage')); +const HuyaAccountsPage = lazy(() => import('./pages/HuyaAccountsPage')); +const HuyaTasksPage = lazy(() => import('./pages/HuyaTasksPage')); + +function RouteFallback() { + return ( +
+ +
+ ); +} + +function lazyRoute(element: ReactNode) { + return }>{element}; +} + function AppContent() { // 用 state 驱动重渲染,登录/登出时调 refreshAuth() const [authVersion, setAuthVersion] = useState(0); @@ -36,20 +49,24 @@ function AppContent() { > - } /> + )} /> : } + element={ + isLoggedIn + ? lazyRoute() + : + } > - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> + )} /> + )} /> + )} /> + )} /> + )} /> + )} /> + )} /> + )} /> + )} /> } />