================
React-Router-DOM
================
.. index::
single: ReactRouterDOM
single: React; ReactRouterDOM
.. contents::
:depth: 3
:backlinks: top
.. toctree::
:maxdepth: 2
RedirectionForm2URI/RedirectionForm2URI
####
:Liens_Web:
* `gérer la navigation programmatique`_
* `Quick Start`_ : semble être la doc officiel
.. _`gérer la navigation programmatique`: https://www.journaldunet.fr/web-tech/developpement/1441259-comment-gerer-la-navigation-programmatique-avec-react-router/
.. _`Quick Start`: https://reactrouter.com/en/6.4.4
React-routeur-dom est une Librairie qui permet de faire du routage entre les pages du projet ou de
l'application sans avoir à recharger le DOM.
Cette librairie est utilisée depuis le composoant racine, génrallement le composant "App.js".
.. warning::
A chaque changement de composant les données seront effacées. Il est donc important de
**percisté les données** avec le localstorage ou une base de donnés. Dans le cas contraite
toutes les données seront perdu puisque le composant sera chargé à son état initial.
####
------------------------------
Cookbook : React-Router-DOM v6
------------------------------
:Liens_Web:
* `Comprendre React Router V6 en 20 minutes`_
.. _`Comprendre React Router V6 en 20 minutes`: https://www.youtube.com/watch?v=hOg-hJDw1NM
Le composant n'est plus utilisé dans la v6. Il est remplacé par le composant
#. Le composant doit être placé au plus haut dans l'arborescence,
générallement dans "index.js".
.. code:: JavaScript
// Document : index.js
// Import de librairie
import React from 'react';
import ReactDOM from 'react-dom/client';
import { BrowserRouter } from 'react-router-dom';
// Import des pages et des composant
import App from './App';
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
);
#. Il faut ensuite définir les différente routes dans le composant à l'aide des
composants et .
La nécéssité de créer des routes et liée au faite d'avoir plusieurs pages chacune dépendantes
d'une URL spécifique. Il peut cependant y avoir des composant statiques commun entre toutes
les pages. C'est le cas des barres de navigation et des footers. Ces éléments doivent être
placés en dehors du composant .
.. code:: JavaScript
// Document : App.js
// Import de librairie Tiers
import React from 'react';
import { Routes, Route } from 'react-router-dom';
// Import des pages et des composant
import Navigation from './components/Navigation/Navigation';
import Home from './pages/Home/Home';
import Entree from './pages/Entree/Entree';
import Resume from './pages/Resume/Resume';
// Import de CSS
import './App.css';
const App = () => {
return (
<>
} />
} />
{/* Toutes les entrée de l'URL différente des routes précédente sont redirigé vers 'Home' */}
} />
} />
>
)
}
export default App;
####
---------------
Link vs NavLink
---------------
:: Permet de créer des liens vers des routes. C'est l'équivalent des
balises dans le html.
:: Permet également de créer des liens vers des routes mais avec une notion
d'analyse de l'éléments sélectionné. Cette analyse permet de mettre en evidence
le liens sélectionné par rapport aux autres liens non séléctionnés. NavLink est
donc plus souvent utilisé dans les barres de navigation.
####
--------
Weblinks
--------
.. target-notes::