SmarMaker - Documentation
Docs» front:routage

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
front:routage [2025/09/29 10:13] – [Mettre en place un router] paolofront: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://reactrouter.com/home) 
- 
-**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 que nous pouvons faire avec notre page **Login**: 
- 
-  * Nous rajoutons un dossier ''Router'' et son ''index.jsx'' par exemple. 
- 
-``` 
-// src/components/app/Router/index.jsx 
- 
-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> 
-    );         
-}; 
-``` 
- 
-Nous avons ajouté au passage une page **Error404** sur ''*'' pour intercepter tout autre chemin. 
- 
-  * On remplace notre composant ''<Login />'' par ''<Router />''. 
- 
-``` 
-// src/App.jsx 
- 
-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"; 
-import { useSelector } from "react-redux"; 
- 
-export const PublicRoutes = () => { 
-    const isAuthentified = true; 
-     
-    return isAuthentified ? <Navigate to="/" : <Outlet />;         
-}; 
-``` 
-``` 
-import { Outlet, Navigate } from "react-router-dom"; 
-import { useSelector } from "react-redux"; 
- 
-export const PrivateRoutes = () => { 
-    const isAuthentified = true; 
-     
-    return isAuthentified ? <Outlet /> : <Navigate to="/login" />;         
-}; 
-``` 
-Dans ces deux composants, on pose une condition qui influe sur l'affichage. ''<Outlet />'' est l'équivalent du prop ''children'' des composants classiques (mais pour les routes), et représente le contenu de la balise. ''<Navigate />'' modifie le chemin. 
- 
-Pour résumer, si l'utilisateur est authentifié, **PublicRoutes** redirige vers un chemin privée (ici ''"/"''), sinon affiche son contenu (page **Login** par exemple). 
- 
-A l'inverse, PrivateRoutes affiche son contenu (page **Home** par exemple) si authentifié et redirige vers un chemin publique (ici ''"/login"'') dans le cas contraire. 
-``` 
-import { Login } from "../../pages/Login"; 
-import { Home } from "../../pages/Home"; 
-import { Error404 } from "../../pages/Error404"; 
- 
-import { PublicRoutes } from "../PublicRoutes"; 
-import { PrivateRoutes } from "../PrivateRoutes"; 
- 
-export const Router = () => { 
-    return ( 
-        <BrowserRouter> 
-            <Routes> 
-                <Route element={<PublicRoutes />}> 
-                    <Route path={`/login`} element={<Login />} /> 
-                </Route> 
-                <Route element={<PrivateRoutes />}> 
-                    <Route path={`/`} element={<Home />} /> 
-                </Route> 
-                <Route path={`*`} element={<Error404 />} /> 
-            </Routes> 
-        </BrowserRouter> 
-    );         
-}; 
-``` 
- 
-On a ajouté au passage une page **Home** histoire d'avoir une route privée. Vous pouvez essayer de définir ''isAuthentified'' à ''false'' et ''true'' pour tester. 
- 
-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'admin par exemple. 
Made with ❤ by CAP-REL · SmartMaker · GNU AGPL v3+
Code source · Faire un don
SmarMaker - Documentation

Table of Contents

  • SmartAuth
  • SmartMaker - Back (PHP)
    • Mapping Dolibarr - React
  • SmartMaker - Front (React)
    • Animations de pages
    • Architecture
    • Astuces
    • Calendar
    • Composants et pages
    • Configuration du Provider
    • Debug et Logs
    • Hooks SmartCommon
    • PWA (Progressive Web App)
    • Requêtes API
    • Routage
    • SmartCommon
    • Stockage de données
    • Synchronisation offline
    • Thèmes
    • Traductions
  • HowTo - Pas à pas - Votre première application
    • Développement PHP (back)
    • Développement React (front)
    • Première étape : Module Builder Dolibarr
    • SmartAuth
    • SmartBoot : Un squelette prêt à l'emploi
  • Formation SmartMaker
    • Module 1 : Fondamentaux JavaScript ES6+
      • Chapitre 1 : Variables et Scope
      • Chapitre 2 : Fonctions
      • Chapitre 3 : Programmation Asynchrone
      • Chapitre 4 : Modules ES6
    • Module 2 : Introduction à React
      • Chapitre 1 : Philosophie React
      • Chapitre 2 : JSX
      • Chapitre 3 : Composants
    • Module 3 : Hooks React Fondamentaux
      • Chapitre 1 : useState
      • Chapitre 2 : useEffect
      • Chapitre 3 : useRef
      • Chapitre 4 : useContext
    • Module 4 : React Avancé
      • Chapitre 1 : useCallback et useMemo
      • Chapitre 2 : Custom Hooks
      • Chapitre 3 : Redux et Redux Toolkit
    • Module 5 : Architecture SmartMaker
      • Chapitre 1 : Structure du projet
      • Chapitre 2 : Configuration
      • Chapitre 3 : Flux de données
    • Module 6 : SmartCommon - Composants
      • Chapitre 1 : Mise en page
      • Chapitre 2 : Navigation
      • Chapitre 3 : Formulaires
      • Chapitre 4 : Affichage
    • Module 7 : SmartCommon - Hooks
      • Chapitre 1 : useApi
      • Chapitre 2 : Gestion d'état
      • Chapitre 3 : Hooks utilitaires
      • Chapitre 4 : Synchronisation Offline
    • Module 8 : Backend API (PHP)
      • Chapitre 1 : Routage
      • Chapitre 2 : Controllers
      • Chapitre 3 : Mappers
      • Extrafields et formulaires dynamiques
    • Module 9 : Intégration complète
      • Chapitre 1 : Backend
      • Chapitre 2 : Frontend
      • Chapitre 3 : Déploiement
    • Module 10 : Fonctionnalités avancées
      • Chapitre 1 : Mode offline
      • Chapitre 2 : Internationalisation (i18n)
      • Chapitre 3 : Autres fonctionnalités
    • Module 11 : Bonnes pratiques
  • Démonstration
  • Start
  • Composants et pages