UNPKG

@lomray/react-route-manager

Version:
131 lines (111 loc) 3.71 kB
# React route manager for [react-router](https://reactrouter.com/) Define and manage application url's in one place. ![npm](https://img.shields.io/npm/v/@lomray/react-route-manager) ![GitHub](https://img.shields.io/github/license/Lomray-Software/react-route-manager) [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=react-route-manager&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=react-route-manager) [![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=react-route-manager&metric=reliability_rating)](https://sonarcloud.io/summary/new_code?id=react-route-manager) [![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=react-route-manager&metric=security_rating)](https://sonarcloud.io/summary/new_code?id=react-route-manager) [![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=react-route-manager&metric=vulnerabilities)](https://sonarcloud.io/summary/new_code?id=react-route-manager) [![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=react-route-manager&metric=ncloc)](https://sonarcloud.io/summary/new_code?id=react-route-manager) [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=react-route-manager&metric=coverage)](https://sonarcloud.io/summary/new_code?id=react-route-manager) ## Getting started The package is distributed using [npm](https://www.npmjs.com/), the node package manager. ``` npm i --save @lomray/react-route-manager ``` ## Usage ```typescript jsx import { Manager } from '@lomray/react-route-manager'; import type { RouteObject } from 'react-router'; /** * Application URL manager */ const manager = new Manager({ routes: { home: { url: '/', }, details: { url: '/details', children: { user: { url: '/user/:id', params: { id: '' }, // id required param }, }, }, about: { url: '/about', }, }, }); /** * Now we can use it for get routes path for react-router */ const routes: RouteObject[] = [ { path: manager.path('home'), lazy: () => import('@pages/home'), }, { path: manager.path('details'), children: [ { index: true, lazy: () => import('@pages/details'), }, { path: manager.path('details.user'), lazy: () => import('@pages/details/user'), }, ], }, { path: manager.path('about'), lazy: () => import('@pages/about'), }, ]; /** * Also we can use it for generate url's */ const MyComponent = () => { return ( <> <Link to{manager.makeURL('home')}>Home page</Link> <Link to{manager.makeURL('about')}>About page</Link> <Link to{manager.makeURL('details')}>Details page</Link> <Link to{manager.makeURL('details.user', { id: 1 })}>User page</Link> </> ) } ``` ## Route params ```typescript const manager = new Manager({ routes: { user: { url: '/user', params: { // required string id: '', // required union id: '' as 'aaa' | 'dddd', // required enum id: DD, // optional string id: undefined, // optional union id: undefined as 'aaa' | 'dddd' | undefined, // optional enum id: undefined as DD | undefined } } } }); ``` Explore [demo app](https://github.com/Lomray-Software/vite-template) to more understand. ## Bugs and feature requests Bug or a feature request, [please open a new issue](https://github.com/Lomray-Software/react-route-manager/issues/new). ## License Made with 💚 Published under [MIT License](./LICENSE).