Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| front:routage [2025/09/25 14:10] – paolo | front:routage [Date inconnue] (Version actuelle) – supprimée - modification externe (Date inconnue) 127.0.0.1 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | # Routage | ||
| - | Documentation [React-router-dom](https:// | ||
| - | |||
| - | **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' | ||
| - | ### Mettre en place un router | ||
| - | |||
| - | Voyons ce qu'on peut faire avec notre page **Login**. | ||
| - | |||
| - | On rajoute un dossier '' | ||
| - | |||
| - | ``` | ||
| - | import { Login } from " | ||
| - | import { Error404 } from " | ||
| - | |||
| - | export const Router = () => { | ||
| - | return ( | ||
| - | < | ||
| - | < | ||
| - | <Route path={`/ | ||
| - | <Route path={`*`} element={< | ||
| - | </ | ||
| - | </ | ||
| - | ); | ||
| - | }; | ||
| - | ``` | ||
| - | |||
| - | On a ajouté au passage une page **Error404** sur '' | ||
| - | |||
| - | On remplace notre composant ''< | ||
| - | |||
| - | ``` | ||
| - | import { Router } from " | ||
| - | |||
| - | export const App = () => { | ||
| - | return ( | ||
| - | <Router /> | ||
| - | ); | ||
| - | }; | ||
| - | ``` | ||
| - | |||
| - | Et voilà notre application possède un router | ||
| - | ! | ||
| - | ### Routes publiques et privées | ||
| - | |||
| - | Dans la plupart des applications, | ||
| - | |||
| - | Comment fait-on ? Surprise ! On crée deux nouveaux composants: **PublicRoutes** et **PrivatesRoutes**. | ||
| - | |||
| - | ``` | ||
| - | import { Outlet, Navigate } from " | ||
| - | |||
| - | export const PublicRoutes = () => { | ||
| - | const user = localStorage.getItem(" | ||
| - | | ||
| - | return user ? < | ||
| - | }; | ||
| - | ``` | ||
| - | ``` | ||
| - | import { Outlet, Navigate } from " | ||
| - | |||
| - | export const PrivateRoutes = () => { | ||
| - | const user = localStorage.getItem(" | ||
| - | | ||
| - | return user ? <Outlet /> : < | ||
| - | }; | ||
| - | ``` | ||
| - | Dans ces deux composants, on pose une condition qui influe sur l' | ||
| - | |||
| - | Pour résumer, si il y a un utilisateur authentifié (stocké en local ou session), **PublicRoutes** redirige vers un chemin privée (ici ''"/"'' | ||
| - | |||
| - | A l' | ||
| - | ``` | ||
| - | import { Login } from " | ||
| - | import { Home } from " | ||
| - | import { Error404 } from " | ||
| - | |||
| - | import { PublicRoutes } from " | ||
| - | import { PrivateRoutes } from " | ||
| - | |||
| - | export const Router = () => { | ||
| - | return ( | ||
| - | < | ||
| - | < | ||
| - | <Route element={< | ||
| - | <Route path={`/ | ||
| - | </ | ||
| - | <Route element={< | ||
| - | <Route path={`/`} element={< | ||
| - | </ | ||
| - | <Route path={`*`} element={< | ||
| - | </ | ||
| - | </ | ||
| - | ); | ||
| - | }; | ||
| - | ``` | ||
| - | |||
| - | On a ajouté au passage une page **Home** histoire d' | ||