Write organized complex route hierarchies for React-router.
MIT License
Utility package designed to simplify the process of defining routes in
react-router
.
router-route takes a custom route map and convert it into a standard route object that can be directly
used with react-router's createBrowserRouter
API. This package streamlines the management of complex
route hierarchies by linking parents and children routes through reference keys, ensuring a clean and
organized route structure.
interface Parent extends Omit<RouteObject, "children"> {
childrenRef?: string | number /** Reference key to children routes*/
}
interface RouteMap {
parents: Parent[]
childrens: Record<string | number, RouteMap>
}
createBrowserRouter
API.npm install @ambiere/router-route
import RouterRoute from "@ambiere/router-route"
const routeMap = {
parents: [
{
element: <RootLayout />,
errorElement: <RootError />,
childrenRef: '_rootChildRef'
},
/** Support modularization for parents */
booksRouteModule
],
childrens: {
"_rootChildRef": { /** Children of RootLayout*/
parents: [
{
path: "/",
element: <Home />,
}
],
childrens: { /** Children of RootLayout's children (if any)*/
/** Support modularization for childrens */
_accountChildRef: usersRouteModule
}
}
}
}
const routerRoute = new RouterRoute(routeMap)
const routerRouteObject = routerRoute.routeObject()
const router = createBrowserRouter(routerRouteObject, options)
RouterRoute(routeMap: RouteMap): RouterRoute
RouterRoute class. Accept routeMap
argument, a custom route map containing parents
and childrens
arrays and
returns an instance of RouterRoute
containing routeObject
method.
routeObject(): RouteObject[]
Converts custom route map into a standard route object and returns a standard route object compatible with react-router's createBrowserRouter
API/method.
This project is licensed under the MIT License.