import './style/global.less'; import React, { useEffect } from 'react'; import ReactDOM from 'react-dom'; import { createStore } from 'redux'; import { Provider } from 'react-redux'; import { ConfigProvider } from '@arco-design/web-react'; import zhCN from '@arco-design/web-react/es/locale/zh-CN'; import enUS from '@arco-design/web-react/es/locale/en-US'; import { BrowserRouter, Switch, Route } from 'react-router-dom'; import axios from 'axios'; import rootReducer from './store'; import PageLayout from './layout'; import { GlobalContext } from './context'; import Login from './pages/login'; import checkLogin from './utils/checkLogin'; import changeTheme from './utils/changeTheme'; import useStorage from './utils/useStorage'; import './mock'; const store = createStore(rootReducer); function Index() { const [lang, setLang] = useStorage('arco-lang', 'en-US'); const [theme, setTheme] = useStorage('arco-theme', 'light'); function getArcoLocale() { switch (lang) { case 'zh-CN': return zhCN; case 'en-US': return enUS; default: return zhCN; } } function fetchUserInfo() { store.dispatch({ type: 'update-userInfo', payload: { userLoading: true }, }); axios.get('/api/user/userInfo').then((res) => { store.dispatch({ type: 'update-userInfo', payload: { userInfo: res.data, userLoading: false }, }); }); } useEffect(() => { if (checkLogin()) { fetchUserInfo(); } else if (window.location.pathname.replace(/\//g, '') !== 'login') { window.location.pathname = '/login'; } }, []); useEffect(() => { changeTheme(theme); }, [theme]); const contextValue = { lang, setLang, theme, setTheme, }; return ( ); } ReactDOM.render(, document.getElementById('root'));