import { useEffect } from 'react'; import { HashRouter, Route, Routes } from 'react-router-dom'; import { LoginPage } from '@/pages/LoginPage'; import { NotificationContainer } from '@/components/common/NotificationContainer'; import { ConfirmationModal } from '@/components/common/ConfirmationModal'; import { MainLayout } from '@/components/layout/MainLayout'; import { ProtectedRoute } from '@/router/ProtectedRoute'; import { useLanguageStore, useThemeStore } from '@/stores'; function App() { const initializeTheme = useThemeStore((state) => state.initializeTheme); const language = useLanguageStore((state) => state.language); const setLanguage = useLanguageStore((state) => state.setLanguage); useEffect(() => { const cleanupTheme = initializeTheme(); return cleanupTheme; }, [initializeTheme]); useEffect(() => { setLanguage(language); // eslint-disable-next-line react-hooks/exhaustive-deps }, []); // 仅用于首屏同步 i18n 语言 useEffect(() => { document.documentElement.lang = language; }, [language]); return ( } /> } /> ); } export default App;