**Ceci est une ancienne révision du document !**
Routage
Documentation React-router-dom
React-router-dom est la lib la plus utilisée pour gérer le routage dans une application React. Elle met à disposition des composants permettant d'afficher des pages sans recharger l'application (Single Page Application) selon l'url ainsi que des hooks facilitant son utilisation.
Mettre en place un router
Voyons ce qu'on peut faire avec notre page Login.
On rajoute un dossier Router
et son index.jsx
dans components/app
par exemple.
import { Login } from "../pages/Login"; import { Error404 } from "../pages/Error404"; export const Router = () => { return ( <BrowserRouter> <Routes> <Route path={`/login`} element={<Login />} /> <Route path={`*`} element={<Error404 />} /> </Routes> </BrowserRouter> ); };
On a ajouté au passage une page Error404 sur *
pour intercepter tout autre chemin.
On remplace notre composant <Login />
par <Router />
.
import { Router } from "./components/app/Router"; export const App = () => { return ( <Router /> ); };
Et voilà notre application possède un router !
Routes publiques et privées
Dans la plupart des applications, il est nécessaire de distinguer les routes publiques accessibles à tout utilisateur, des routes privées qui nécessitent une authentification.
Comment fait-on ? Surprise ! On crée deux nouveaux composants: PublicRoutes et PrivatesRoutes.
import { Outlet, Navigate } from "react-router-dom"; export const PublicRoutes = () => { const user = localStorage.getItem("user") ?? sessionStorage.getItem("user"); return user ? <Navigate to="/" : <Outlet />; };
import { Outlet, Navigate } from "react-router-dom"; export const PrivateRoutes = () => { const user = localStorage.getItem("user") ?? sessionStorage.getItem("user"); return user ? <Outlet /> : <Navigate to="/login" />; };
On les ajoute maintenant à notre Router.
```