SmarMaker - Documentation
Docs» front:routage

**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" />;        
};
Previous Next

Made with ❤ by CAP-REL · SmartMaker · GNU AGPL v3+
Code source · Faire un don
SmarMaker - Documentation
Traductions de cette page:
  • Français
  • Deutsch
  • English
  • Español
  • Italiano
  • Nederlands

Table of Contents

Table des matières

  • Routage
      • Mettre en place un router
      • Routes publiques et privées
  • 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
  • Afficher le texte source
  • Anciennes révisions
  • Liens de retour
  • Haut de page