⊗jsrxPmATSL 56 of 57 menu

Liste des vendeurs dans Redux

Lors des leçons précédentes, nous avons terminé la matière principale. Maintenant, en utilisant thunk, nous obtenons la liste des produits depuis le serveur et pouvons sauvegarder un nouveau produit sur le serveur. Occupons-nous des vendeurs. Après tout, nous obtenons aussi des données pour eux. Créons une page séparée avec la liste des vendeurs.

Ouvrons notre application avec les produits, et dans celle-ci le dossier sellers. Créons dans ce dossier le fichier SellersList.jsx. Ici, nous utiliserons useSelector, Link et selectAllSellers, dont nous écrirons le code dans sellersSlice.js un peu plus tard :

import { useSelector } from 'react-redux' import { Link } from 'react-router-dom' import { selectAllSellers } from './sellersSlice'

Ensuite, créons le SellersList lui-même. Dedans, nous obtiendrons tous les vendeurs à l'aide du hook useSelector, puis nous obtiendrons le rendu pour la liste des vendeurs dans une boucle map, chaque nom de vendeur devant mener vers sa page. Et à la fin, nous retournerons le rendu avec le titre et la liste obtenue :

export const SellersList = () => { const sellers = useSelector(selectAllSellers) const sellersToRender = sellers.map((seller) => ( <li key={seller.id}> <Link to={`/sellers/${seller.id}`}>{seller.name}</Link> </li> )) return ( <div> <h2>Vendeurs :</h2> <ul>{sellersToRender}</ul> </div> ) }

Ensuite, allons dans le fichier sellersSlice.js et, par analogie avec les sélecteurs dans productsSlice.js, créons à la toute fin du fichier deux sélecteurs après l'export du réducteur :

export const selectAllSellers = (state) => state.sellers export const selectSellerById = (state, sellerId) => state.sellers.find((seller) => seller.id === sellerId)

Maintenant, nous devons définir la route pour la page avec la liste, pour cela ouvrons le fichier App.jsx et dans le tableau des routes enfants children ajoutons un autre objet (n'oubliez pas d'importer le composant SellersList) :

{ path: '/sellers', element: <SellersList />, },

Pour que notre lien 'Sellers' dans le menu fonctionne, allons dans le fichier root.jsx (cela remonte à loin ... ) et remplaçons la balise a par l'élément NavLink :

<NavLink to="/sellers" end> Vendeurs </NavLink>

Et dernière chose. Pour que dans notre menu le lien actif soit mis en évidence, et qu'il soit compréhensible sur quelle page nous nous trouvons, nous ajouterons un style dans index.css :

nav a.active { color: purple; }

Lançons notre application. Maintenant nous pouvons aller sur la page des vendeurs en cliquant sur 'Vendeurs' dans le menu. Avant, bien sûr, il faut cliquer sur 'Produits' dans le menu, sinon nos produits ne se chargeront pas. Dans la prochaine leçon, nous créerons une page pour chaque vendeur et nous terminerons l'étude de ce tutoriel sur Redux.

Ouvrez votre application avec les étudiants. Après avoir étudié les matériels de la leçon, dans le dossier teachers créez le fichier TeachersList.jsx. À l'aide de ce composant, vous afficherez la liste des enseignants. Importez-y les composants et hooks nécessaires.

Écrivez le code pour le composant TeachersList, obtenez-y tous les enseignants et créez une liste d'enseignants teachersToRender, que dans chaque ligne de cette liste s'affichent leurs noms de famille et initiales, et entre parenthèses la matière qu'ils enseignent. Que chaque nom complet soit un lien menant vers une page séparée pour chaque enseignant. Puis à la fin du code du composant, retournez le rendu avec le titre et la liste créée.

À la fin du fichier teachersSlice.js, créez une paire de fonctions-sélecteurs selectAllTeachers et selectTeacherById, comme montré dans la leçon.

Dans App.jsx, connectez une autre route enfant pour la page des enseignants.

Dans le fichier root.jsx dans le menu pour 'Teachers' remplacez la balise a par NavLink, comme montré dans la leçon. Faites en sorte que le lien actif dans le menu soit mis en évidence d'une certaine manière, en ajoutant pour cela des styles dans index.css.

hyuzlkabnes