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