📝 Exercices — R10 React Router

10 exercices sur la navigation, les routes dynamiques et les routes protégées.

EX 1

Configuration du router

Configurez React Router en enveloppant votre application dans BrowserRouter et en définissant des routes avec Routes. Créez 3 routes : /, /about et * (404).

EX 2

Routes de base avec composants

Créez 4 pages (Home, Blog, Contact, NotFound) et configurez les routes correspondantes. Chaque Route doit avoir un path et un element.

EX 3

Navigation avec Link et NavLink

Créez une barre de navigation avec Link et NavLink. Le NavLink doit appliquer un style différent quand le lien est actif via la prop className ou style avec la fonction { isActive }.

EX 4

Navigation programmatique — useNavigate

Créez un formulaire de connexion qui redirige vers /dashboard après soumission avec useNavigate. Ajoutez aussi un bouton retour avec navigate(-1).

EX 5

Paramètres URL — useParams

Créez une liste d'articles et une page de détail. La route de détail utilise /articles/:id. Dans ArticleDetail, récupérez l'id avec useParams pour afficher l'article correspondant.

EX 6

Query string — useSearchParams

Créez une liste paginée filtrée par catégorie. L'état de la pagination et du filtre doit vivre dans l'URL (ex: ?page=2&cat=react) via useSearchParams.

EX 7

Routes imbriquées avec Outlet

Créez un layout avec navbar persistante qui utilise <Outlet /> pour afficher les pages enfants. Les routes blog et blog/:slug doivent être imbriquées dans la route parente.

EX 8

Routes protégées avec Navigate

Créez un composant RequireAuth qui redirige vers /login avec <Navigate to="/login" replace /> si l'utilisateur n'est pas connecté. Protégez les routes /dashboard et /profile.

EX 9

useLocation — fil d'Ariane

Utilisez useLocation pour créer un composant Breadcrumb qui affiche le chemin actuel sous forme de liens cliquables (ex: Accueil / blog / mon-article). Basez-vous sur location.pathname.

EX 10

Application complète avec React Router

Créez une mini-application e-commerce avec : layout, page accueil, liste produits (/produits), détail produit (/produits/:id), login et dashboard protégé. Utilisez useParams, NavLink, RequireAuth et Navigate.

← Cours R10 ▶ Mini-projet : SPA Router Suivant : Performance →