⊗jsrxPmATSL 56 of 57 menu

Lista vânzătorilor în Redux

În lecțiile anterioare am terminat cu materialul principal. Acum folosind thunk obținem lista de produse de la server și putem salva un nou produs pe server. Să ne ocupăm de vânzători. La urma urmei, primim date și pentru ei. Să facem o pagină separată cu lista vânzătorilor.

Deschideți aplicația noastră cu produse, iar în ea folderul sellers. Să creăm în acest folder fișierul SellersList.jsx. Aici vom folosi useSelector, Link și selectAllSellers, al cărui cod îl scriem în sellersSlice.js mai târziu:

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

Apoi creăm SellersList însuși. În el obținem toți vânzătorii folosind hook-ul useSelector, apoi obținem markup-ul pentru lista de vânzători în ciclul map, iar fiecare nume de vânzător va duce către pagina lui. Și la final returnăm markup-ul cu titlul și lista obținută:

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>Vânzători:</h2> <ul>{sellersToRender}</ul> </div> ) }

Apoi intrăm în fișierul sellersSlice.js și prin analogie cu selectorii din productsSlice.js creăm la sfârșitul fișierului doi selectori după exportul reducer-ului:

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

Acum trebuie să configurăm ruta pentru pagina cu lista, pentru aceasta deschidem fișierul App.jsx și în array-ul de rute copil children adăugăm încă un obiect (nu uitați să importați componenta SellersList):

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

Pentru ca link-ul nostru 'Vânzători' din meniu să funcționeze, să intrăm în fișierul root.jsx (cât de demult a fost... ) și să înlocuim tag-ul a cu elementul NavLink:

<NavLink to="/sellers" end> Vânzători </NavLink>

Și ultimul lucru. Pentru ca în meniul nostru să fie evidențiat link-ul activ și să fie clar pe ce pagină ne aflăm, adaugăm un stil în index.css:

nav a.active { color: purple; }

Să pornim aplicația noastră. Acum putem intra pe pagina cu vânzători, făcând clic pe 'Vânzători' din meniu. Bineînțeles, mai întâi trebuie să faceți clic pe 'Produse' în meniu, altfel produsele noastre nu se vor încărca. În lecția următoare vom face o pagină pentru fiecare vânzător și cu asta vom încheia studiul acestui ghid despre Redux.

Deschideți aplicația voastră cu studenții. După ce ați studiat materialul lecției, în folderul teachers creați fișierul TeachersList.jsx. Cu ajutorul acestei componente veți afișa lista cadrelor didactice. Importați în el componentele și hook-urile necesare.

Scrieți codul pentru componenta TeachersList, obțineți în ea toți cadrele didactice și faceți lista cadrelor didactice teachersToRender, lăsați în fiecare rând al acestei liste să fie afișate numele și inițialele lor, iar în paranteze materia pe care o predau. Lăsați fiecare nume împreună să fie un link care duce către o pagină separată pentru fiecare cadru didactic. Apoi la sfârșitul codului componentei returnați markup-ul cu titlul și lista creată.

La sfârșitul fișierului teachersSlice.js creați o pereche de funcții-selector selectAllTeachers și selectTeacherById, așa cum este arătat în lecție.

În App.jsx conectați încă o rută copil pentru pagina cu cadrele didactice.

În fișierul root.jsx în meniu pentru 'Cadre didactice' înlocuiți tag-ul a cu NavLink, așa cum este arătat în lecție. Faceți ca link-ul activ din meniu să fie evidențiat cumva, adăugând pentru aceasta stiluri în index.css.

Română
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Folosim cookie pentru funcționarea site-ului, analiză și personalizare. Prelucrarea datelor are loc în conformitate cu Politica de confidențialitate.
acceptă toate configurează respinge