⊗jsrxPmRDPP 21 of 57 menu

Page pour un produit dans Redux

Dans cette leçon, nous allons créer une page distincte pour afficher les informations d'un produit spécifique.

Ouvrons notre application de produits et dans le dossier products créons le fichier ProductPage.jsx. Comme vous vous en souvenez, chacun de nos produits a un identifiant unique. Grâce à cet id, nous pourrons générer une URL unique pour la page de chaque produit. Traditionnellement, elle ressemblera à : /products/id123. Et l'id sera contenu dans sa partie dynamique (nous nous occuperons de la route elle-même un peu plus tard).

Alors, créons un composant vide ProductPage dans ProductPage.jsx :

export const ProductPage = () => {}

La première chose que nous ferons ici est d'utiliser le hook useParams pour extraire la partie dynamique de l'URL de la page produit sur laquelle nous nous trouvons :

export const ProductPage = () => { let params = useParams() const { productId } = params }

Ensuite, à partir de l'id obtenu, nous chercherons le produit correspondant dans le slice products du store, en utilisant le hook useSelector que nous connaissons déjà :

const product = useSelector((state) => state.products.find((product) => product.id === productId) )

N'oublions pas d'importer les deux hooks dans le fichier :

import { useSelector } from 'react-redux' import { useParams } from 'react-router-dom'

Si le produit dont nous avons besoin n'est pas trouvé (par exemple, si l'utilisateur a saisi une adresse incorrecte), nous afficherons une information à ce sujet sur l'écran. À cette étape, le code pour le composant ProductPage devrait ressembler à ceci :

export const ProductPage = () => { let params = useParams() const { productId } = params const product = useSelector((state) => state.products.find((product) => product.id === productId) ) if (!product) { return <p>Aucun produit trouvé</p> } }

Et il ne nous reste plus qu'à afficher les données obtenues du produit dans le rendu :

return ( <div> <h2>{product.name}</h2> <p>Description : {product.desc}</p> <p>Prix : {product.price}</p> <p>Quantité : {product.amount}</p> </div> )

Ouvrez votre application d'étudiants. Dans le dossier students, créez le fichier StudentPage.jsx, dans lequel vous récupérerez et afficherez les informations de l'étudiant sélectionné.

À l'aide du hook react-redux useSelector, récupérez les informations nécessaires sur l'étudiant, comme montré dans la leçon.

Affichez à l'écran dans le composant les informations obtenues sur l'étudiant.

fresbynlaz