Discussions

Routes imbriquées avec react-router-dom V6

Image

Bonjour à tous pour cette partie avec la version 6 de react-router-dom j'ai trouvé la solution suivant :

 

Voici le code pour App.js

 

// Librairies
import React from 'react';
import './App.css';
import { Route, Routes } from 'react-router-dom';

// Composants
import Layout from './hoc/Layout/Layout';
import Home from './Containers/Home/Home';
import Contact from './Containers/Contact/Contact';
import Articles from './Containers/Articles/Articles';
import Article from './Containers/Articles/Article/Article';


function App() {
  return (
    <div className="App">
      <Layout>
        <Routes>
          <Route path='/' Component={Home} />
          <Route path='/contact' Component={Contact} >
            <Route path="/contact/email" element={<p>Email</p>} />
            <Route path="/contact/telephone" element={<p>Téléphone</p>} />
          </Route>
          <Route path='/articles' Component={Articles} />
          <Route path='/articles/:id' Component={Article} />
          <Route path="*" element={<h1>404</h1>} />
        </Routes>
      </Layout>
    </div>
  );
}

export default App;

 

 

Et la partie de code pour le fichier Contact.js 

 

// Librairies
import React from "react";
import classes from "./Contact.module.css";
import { Outlet, useNavigate } from 'react-router-dom';

function Contact() {
   const navigate = useNavigate();

   // Fonctions
   const emailClickedHandler = () => {
      navigate('/contact/email');
   }

   const callClickedHandler = () => {
      navigate('/contact/telephone');
   }


   return (
      <>
         <h1>Contact</h1>
         <p>Par quel moyen de contact souhaitez-vous échanger ?</p>
         <button onClick={emailClickedHandler}className={classes.button}>Email</button>
         <button onClick={callClickedHandler} className={classes.button}>Téléphone</button>

         <Outlet />

      </>
   );
}

export default Contact;

 

Cordialement

 

Sébastien Collin

0 réponse
Image
Inscrivez-vous ou connectez-vous pour participer à la discussion.
Aide spontanée

Informations

Créée le August 28, 2023 8:02 PM
Dernière activité le August 28, 2023 8:02 PM