monorepo-microservice-rbac/apps/aorta/src/router/index.tsx

43 lines
1.1 KiB
TypeScript
Raw Normal View History

2023-09-07 16:42:34 +08:00
import { baseRoutes } from "./router.config";
import { Route, RouteObject, Routes, useLocation } from "react-router-dom";
import { RouteGuard } from "./AuthGuard";
import { pathToRegexp } from "path-to-regexp";
import { defaultTitle } from "@/constant";
2023-08-27 14:37:59 +08:00
2023-09-07 16:42:34 +08:00
// export const RouterElements = () => useRoutes(routesConfig);
export type ExpandRouteProps = {
title?: string;
};
export const RouterElements = () => {
const location = useLocation();
/**
* document.title
*/
const currentRoute = [...baseRoutes].find((r) =>
pathToRegexp(location.pathname).test(r.path!)
);
document.title = currentRoute?.title ?? defaultTitle;
/**
* children
*/
const generateRoutes = (routes: (RouteObject & ExpandRouteProps)[]) =>
routes.map((r) => (
<Route key={r.path} path={r.path} element={r.element}>
{r.children && generateRoutes(r.children)}
</Route>
));
return (
<RouteGuard ignorePaths={[]}>
<Routes>
{generateRoutes(baseRoutes)}
<Route key="notfound" path="*" element={<span>404</span>} />
</Routes>
</RouteGuard>
);
};