import type { ComponentType } from "react" import { createBrowserRouter } from "react-router-dom" import ErrorPage from "@/page/error" import LoadingFallback from "@/components/loading-fallback" /** * 懒加载组件 * @param importer */ function lazyLoading }>(importer: () => Promise) { return async () => { const module = await importer() return { Component: module.default, } } } const router = createBrowserRouter([ { path: "/login", lazy: lazyLoading(() => import("@/page/login")), handle: { label: "用户登录", }, hydrateFallbackElement: , }, { path: "/register", lazy: lazyLoading(() => import("@/page/register")), handle: { label: "用户注册", }, hydrateFallbackElement: , }, { path: "/", lazy: lazyLoading(() => import("@/components/protected-route")), errorElement: , handle: { label: "控制台", }, hydrateFallbackElement: , children: [ { index: true, lazy: lazyLoading(() => import("@/page/home")), handle: { label: "用户主页", }, hydrateFallbackElement: , }, { path: "users", lazy: lazyLoading(() => import("@/page/user")), handle: { label: "用户管理", }, hydrateFallbackElement: , }, { path: "roles", lazy: lazyLoading(() => import("@/page/role")), handle: { label: "角色管理", }, hydrateFallbackElement: , }, { path: "menus", lazy: lazyLoading(() => import("@/page/menu")), handle: { label: "菜单管理", }, hydrateFallbackElement: , }, ], }, { path: "*", lazy: lazyLoading(() => import("@/page/not-found")), hydrateFallbackElement: , }, ]) export default router