index.tsx 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import { ErrorBoundary } from 'react-error-boundary'
  2. import { createHashRouter, Navigate, type RouteObject } from 'react-router'
  3. import { RouterProvider } from 'react-router/dom'
  4. import type { AppRouteObject } from '#/router'
  5. import ProtectedRoute from '@/router/components/protected-route'
  6. import { usePermissionRoutes } from '@/router/hooks'
  7. import { ERROR_ROUTE } from '@/router/routes/error-routes'
  8. // import HOME_ROUTE from '@/router/routes/modules/constantRoutes'
  9. import DashboardLayout from '@/layouts/dashboard'
  10. import PageError from '@/pages/sys/error/PageError'
  11. import Login from '@/pages/sys/login/Login'
  12. const { VITE_APP_HOMEPAGE: HOMEPAGE } = import.meta.env
  13. const PUBLIC_ROUTE: AppRouteObject = {
  14. path: '/login',
  15. element: (
  16. <ErrorBoundary FallbackComponent={PageError}>
  17. <Login />
  18. </ErrorBoundary>
  19. )
  20. }
  21. const NO_MATCHED_ROUTE: AppRouteObject = {
  22. path: '*',
  23. element: <Navigate to='/404' replace />
  24. }
  25. export default function Router() {
  26. console.log('Router render')
  27. const permissionRoutes = usePermissionRoutes()
  28. // 动态路由
  29. const PROTECTED_ROUTE: AppRouteObject = {
  30. path: '/',
  31. element: (
  32. <ProtectedRoute>
  33. <DashboardLayout />
  34. </ProtectedRoute>
  35. ),
  36. children: [
  37. { index: true, element: <Navigate to={HOMEPAGE} replace /> },
  38. // HOME_ROUTE,
  39. ...permissionRoutes
  40. ]
  41. }
  42. const routes = [PUBLIC_ROUTE, PROTECTED_ROUTE, ERROR_ROUTE, NO_MATCHED_ROUTE] as RouteObject[]
  43. console.log(routes)
  44. const router = createHashRouter(routes)
  45. console.log(router)
  46. return <RouterProvider router={router} />
  47. }