import { lazy } from 'react'; import { Navigate, Outlet, createHashRouter, redirect } from 'react-router-dom'; import NProgress from 'nprogress'; import store from '../store'; import { clearQueue } from '../store/cancelReq'; import { routerChangeListener } from '../utils'; import ErrorBoundary from '../components/ErrorBoundary'; NProgress.inc(0.2); NProgress.configure({ easing: 'ease', speed: 500, showSpinner: false }); NProgress.done(); const Login = lazy(() => import('../views/Login')); const Home = lazy(() => import('../views/Home')); const Demo = lazy(() => import('../views/Demo')); function AuthLoader() { if (!store.getState().user.token) { return redirect('/login'); } return {}; } store.dispatch(clearQueue()); routerChangeListener(() => { store.dispatch(clearQueue()); NProgress.start(); Promise.resolve().then(() => NProgress.done()); }); export default createHashRouter([ { path: '/', element: ( ), children: [ { index: true, element: , }, { path: '/login', element: , }, { path: '/home', loader: AuthLoader, element: , }, { path: '/demo', element: , }, ], }, ]);