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:16] – 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 | ||
- | Voyons ce qu'on peut faire avec notre page Login. | + | Voyons ce que nous pouvons |
+ | |||
+ | * Nous rajoutons un dossier '' | ||
``` | ``` | ||
+ | // src/ | ||
+ | |||
+ | import { Login } from " | ||
+ | import { Error404 } from " | ||
+ | |||
export const Router = () => { | export const Router = () => { | ||
return ( | return ( | ||
< | < | ||
< | < | ||
- | <Route path={`/ | + | <Route path={`/ |
- | <Route path={`*`} element={< | + | <Route path={`*`} element={< |
</ | </ | ||
</ | </ | ||
Ligne 19: | Ligne 28: | ||
}; | }; | ||
``` | ``` | ||
+ | |||
+ | Nous avons complété notre **Router** en rajoutant une page **Error404** sur '' | ||
+ | |||
+ | * Nous remplaçons notre composant ''< | ||
+ | |||
+ | ``` | ||
+ | // src/App.jsx | ||
+ | |||
+ | 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: '' | ||
+ | |||
+ | ``` | ||
+ | // src/ | ||
+ | |||
+ | import { Outlet, Navigate } from " | ||
+ | import { useSelector } from " | ||
+ | |||
+ | export const PublicRoutes = () => { | ||
+ | const isAuthentified = true; | ||
+ | | ||
+ | return isAuthentified ? < | ||
+ | }; | ||
+ | ``` | ||
+ | ``` | ||
+ | // src/ | ||
+ | |||
+ | import { Outlet, Navigate } from " | ||
+ | import { useSelector } from " | ||
+ | |||
+ | export const PrivateRoutes = () => { | ||
+ | const isAuthentified = true; | ||
+ | | ||
+ | return isAuthentified ? <Outlet /> : < | ||
+ | }; | ||
+ | ``` | ||
+ | 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 ( | ||
+ | < | ||
+ | < | ||
+ | <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' |