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 13:42] – paolo | front:routage [2025/09/29 10:25] (Version actuelle) – [Routes publiques et privées] paolo | ||
---|---|---|---|
Ligne 3: | Ligne 3: | ||
Documentation [React-router-dom](https:// | 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' | + | **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 | ### Mettre en place un router | ||
- | Voyons ce qu'on peut faire avec notre page **Login**. | + | Voyons ce que nous pouvons |
- | On rajoute | + | * Nous rajoutons |
``` | ``` | ||
- | import { Login } from " | + | // src/ |
- | import { Error404 } from " | + | |
+ | import { Login } from "../../ | ||
+ | import { Error404 } from "../../ | ||
export const Router = () => { | export const Router = () => { | ||
Ligne 27: | Ligne 29: | ||
``` | ``` | ||
- | On a ajouté au passage | + | Nous avons complété notre **Router** en rajoutant |
- | On remplace | + | * Nous remplaçons |
``` | ``` | ||
+ | // src/App.jsx | ||
+ | |||
import { Router } from " | import { Router } from " | ||
Ligne 41: | Ligne 45: | ||
``` | ``` | ||
- | Et voilà notre application possède un router | + | Et voilà notre application possède un router |
+ | ! | ||
### Routes publiques et privées | ### Routes publiques et privées | ||
Dans la plupart des applications, | Dans la plupart des applications, | ||
- | Comment fait-on ? Surprise ! On crée deux nouveaux composants: | + | Comment fait-on ? Surprise ! On crée deux nouveaux composants: |
``` | ``` | ||
+ | // src/ | ||
+ | |||
import { Outlet, Navigate } from " | import { Outlet, Navigate } from " | ||
+ | import { useSelector } from " | ||
export const PublicRoutes = () => { | export const PublicRoutes = () => { | ||
- | const user = localStorage.getItem("user") ?? sessionStorage.getItem("user"); | + | const isAuthentified |
+ | |||
+ | return isAuthentified ? < | ||
+ | }; | ||
+ | ``` | ||
+ | ``` | ||
+ | // src/ | ||
+ | |||
+ | import { Outlet, Navigate } from "react-router-dom"; | ||
+ | import { useSelector } from " | ||
+ | |||
+ | export const PrivateRoutes = () => { | ||
+ | const isAuthentified = true; | ||
+ | |||
+ | return isAuthentified | ||
+ | }; | ||
+ | ``` | ||
+ | Dans ces deux composants, nous posons une condition qui influe sur l' | ||
+ | |||
+ | Pour résumer, si l' | ||
+ | |||
+ | A l' | ||
+ | ``` | ||
+ | // src/ | ||
+ | |||
+ | import { Login } from " | ||
+ | import { Home } from " | ||
+ | import { Error404 } from " | ||
+ | |||
+ | import { PublicRoutes } from " | ||
+ | import { PrivateRoutes } from " | ||
+ | |||
+ | export const Router = () => { | ||
return ( | return ( | ||
- | + | < | |
+ | < | ||
+ | <Route element={< | ||
+ | <Route path={`/ | ||
+ | </ | ||
+ | <Route element={< | ||
+ | <Route path={`/`} element={< | ||
+ | </ | ||
+ | <Route path={`*`} element={< | ||
+ | </ | ||
+ | </ | ||
); | ); | ||
}; | }; | ||
+ | ``` | ||
+ | |||
+ | Nous avons complété notre **Router** en rajoutant une page **Home**. | ||
+ | |||
+ | Vous pouvez essayer de définir '' | ||
+ | |||
+ | On ne traite ici que des routes publiques et privées mais on utiliserait le même système si l'on souhaité rajouter un autre type de route comme les routes d' |