Configuration de l'acheminement dynamique dans une application React (2024)

Dans cette suite d'articles, nous approfondirons la mise en place de l'acheminement dynamique dans une application React, en mettant l'accent sur la création de routes dynamiques pour afficher des données spécifiques à chaque élément sur sa propre page. Si vous avez suivi la première partie, où nous avons expliqué comment récupérer des données d'une API et les afficher à l'aide de React Hooks et Axios, vous avez maintenant une page "Produits en vedette" qui présente les données récupérées.

Installation de React Router DOM

La première étape consiste à installer React Router DOM, qui nous permettra de gérer la navigation de manière dynamique. Exécutez la commande suivante dans votre terminal :

npm install react-router-dom

Ensuite, dans votre fichier App.js, importez Router, Route et Switch pour configurer les routes. Nous allons définir notre page d'accueil comme la page des "Produits en vedette" en lui attribuant le chemin "/".

import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';

// ...

<Router>
  <Switch>
    <Route path="/" component={FeaturedProducts} />
    {/* Autres routes dynamiques à ajouter ici */}
  </Switch>
</Router>

Configuration de la route dynamique

Pour mettre en place une route dynamique, nous allons créer un composant appelé "Product" qui affichera les détails d'un produit spécifique. Dans FeaturedProducts.js, ajoutons un lien à chaque carte de produit pour permettre la navigation vers la page individuelle du produit.

import { Link } from 'react-router-dom';

// ...

{products.map((product) => (
  <div key={product.id} className="card">
    {/* Autres détails du produit */}
    <Link to={`/product/${product.id}`}>Voir</Link>
  </div>
))}

Création du composant Product

Créez un fichier Product.js dans le dossier src pour contenir le composant qui affichera les détails du produit. Utilisez les hooks useState, useEffect et Axios pour récupérer les données du produit spécifique en fonction de l'ID passé dans l'URL.

import React, { useState, useEffect } from 'react';
import axios from 'axios';

const Product = ({ match }) => {
  const [data, setData] = useState([]);

  useEffect(() => {
    const fetchProduct = async () => {
      try {
        const response = await axios.get(`/api/products/${match.params.id}`);
        setData(response.data);
      } catch (error) {
        console.error('Erreur lors de la récupération des données du produit', error);
      }
    };

    fetchProduct();
  }, [match.params.id]);

  // Affichage des détails du produit
  return (
    <div>
      {/* Afficher les détails du produit ici */}
    </div>
  );
};

export default Product;

Retour à la page des Produits en vedette

Pour permettre une navigation fluide entre la page des "Produits en vedette" et les pages individuelles des produits, ajoutons un lien de retour à la page principale.

import { Link } from 'react-router-dom';

// ...

<Link to="/">RETOUR AUX PRODUITS EN VEDETTE</Link>

En suivant ces étapes, vous avez maintenant une configuration complète d'acheminement dynamique dans votre application React. Chaque produit sur la page des "Produits en vedette" est lié à sa propre page avec un ID unique dans l'URL. Cette approche améliorée de la navigation peut contribuer à une meilleure expérience utilisateur et à un positionnement plus élevé dans les résultats de recherche.

Configuration de l'acheminement dynamique dans une application React (2024)
Top Articles
Latest Posts
Article information

Author: Jerrold Considine

Last Updated:

Views: 5701

Rating: 4.8 / 5 (78 voted)

Reviews: 93% of readers found this page helpful

Author information

Name: Jerrold Considine

Birthday: 1993-11-03

Address: Suite 447 3463 Marybelle Circles, New Marlin, AL 20765

Phone: +5816749283868

Job: Sales Executive

Hobby: Air sports, Sand art, Electronics, LARPing, Baseball, Book restoration, Puzzles

Introduction: My name is Jerrold Considine, I am a combative, cheerful, encouraging, happy, enthusiastic, funny, kind person who loves writing and wants to share my knowledge and understanding with you.