⊗jsrxPmRDMDO 30 of 57 menu

Återanvändning av data från ett slice i Redux

I föregående lektion lade vi till ett fält till formuläret för att lägga till en produkt med en rullgardinsmeny för att välja säljare som lägger upp den. Låt oss anta att vi nu också behöver visa denna information på flera andra ställen i applikationen. För att göra detta kommer vi inte att duplicera koden varje gång, utan skapa en separat komponent där vi hämtar data från slicet och visar dem i de delar av applikationen där vi behöver.

Öppna vår produktapplikation. Låt oss nu i mappen products skapa en fil till SellerOfProd.jsx. Till att börja med importerar vi hooken useSelector, med hjälp av vilken vi kommer att få slicet med den önskade produkten:

import { useSelector } from 'react-redux'

Sedan extraherar vi från store den önskade produkten via säljarens id, som vi kommer att skicka till vår nya komponent i props:

export const SellerOfProd = ({ sellerId }) => { const seller = useSelector((state) => state.sellers.find((seller) => seller.id === sellerId) ) }

Och om en sådan säljare finns, kommer vi att returnera dess namn, och om inte, returnerar vi 'unknown':

return <span>by {seller ? seller.name : 'unknown'}</span>

Låt oss nu importera vår nya komponent till ProductsList.jsx och sätta in den i funktionen ProductsList direkt efter rubriken med produktnamnet. Som ni ser gav vi den id i props:

<SellerOfProd sellerId={product.seller} />

Om vi nu startar vår applikation, lägger till en ny produkt och hittar den i listan, kommer vi att se att den har fått en säljare, medan produkterna som automatiskt lades till när applikationen startades kommer att ha 'unknown'.

En liten parentes: om din eslint i redigeraren VS Code klagar på sellerId, men applikationen fungerar, kan du ignorera det för nu eller öppna filen .eslintrc.cjs i din applikation och i rules lägga till "react/prop-types": "off".

Det förstås självklart att vi också skulle vilja lägga till information om säljaren på produktsidan. För att göra detta sätter vi in i renderingen av ProductPage efter rubriken med produktnamnet samma rad igen och kontrollerar att allt fungerar:

<SellerOfProd sellerId={product.seller} />

Öppna din studentapplikation. Efter att ha studerat lektionens material, skapa i mappen students en fil för komponenten TeacherForStudent. Som ett resultat ska komponenten returnera lärarens hela namn, och bredvid inom parentes ämnet som han/hon undervisar i. Hitta den önskade läraren med hjälp av hooken useSelector. Om läraren för denna student saknas, visa 'anonym'.

Med hjälp av den erhållna komponenten från föregående uppgift, visa data för läraren för varje student på sidan med studentlistan.

Gör samma sak som i föregående uppgift, men för den enskilda studentens sida.

Svenska
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi använder kakor för webbplatsens funktion, analys och personalisering. Behandling av data sker i enlighet med Integritetspolicyn.
acceptera alla anpassa avvisa