⊗jsrxPmRDMDO 30 of 57 menu

Večkratna uporaba podatkov iz slice-a v Redux-u

V prejšnji lekciji smo obrazcu za dodajanje izdelka dodali še eno polje z spustnim seznamom za izbiro prodajalca, ki ga objavlja. Predpostavimo, da moramo zdaj te podatke prikazati še na več mestih v aplikaciji. Za to ne bomo vsakič podvajali kode, ampak bomo preprosto ustvarili ločeno komponento, v kateri bomo pridobili podatke iz slice-a in jih prikazali v tistih delih aplikacije, kjer jih potrebujemo.

Odprimo našo aplikacijo z izdelki. Ustvarimo zdaj v mapi products še datoteko SellerOfProd.jsx. Za začetek uvažajmo hook useSelector, s pomočjo katerega bomo pridobili slice z želenim izdelkom:

import { useSelector } from 'react-redux'

Nato izvlečimo iz store potrebni izdelek po id-ju prodajalca, ki ga bomo posredovali naši novi komponenti v props:

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

In v primeru, da tak prodajalec obstaja, bomo vrnili njegovo ime, če pa ne, bomo vrnili 'unknown':

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

Uvažajmo zdaj našo novo komponento v ProductsList.jsx in vstavimo jo v funkciji ProductsList takoj za naslovom z imenom izdelka. Kot vidite, smo mu v props podali id:

<SellerOfProd sellerId={product.seller} />

Če zdaj zaženemo našo aplikacijo, dodamo nov izdelek in ga poiščemo na seznamu, bomo videli, da je dobil prodajalca, izdelki, ki so bili samodejno dodani ob zagonu aplikacije, pa bodo imeli 'unknown'.

Majhna opomba: če se vaš eslint v urejevalniku VS Code pritožuje nad sellerId, aplikacija pa deluje, lahko to za zdaj prezrete ali odprete datoteko .eslintrc.cjs vaše aplikacije in v rules dodajte "react/prop-types": "off".

Samoumevno je, da bi želeli dodati podatke o prodajalcu tudi na strani izdelka. Za to vstavimo v predlogi ProductPage za naslovom z imenom izdelka spet to vrstico in preverimo, da vse deluje:

<SellerOfProd sellerId={product.seller} />

Odprite vašo aplikacijo s študenti. Po preučitvi gradiva lekcije, v mapi students ustvarite datoteko za komponento TeacherForStudent. Kot rezultat naj komponenta vrne polno ime učitelja, zraven v oklepajih pa predmet, ki ga poučuje. Zahtevanega učitelja poiščite s pomočjo hooka useSelector. Če učitelj za danega študenta manjka, izpišite 'anonym'.

S pomočjo pridobljene komponente iz prejšnje naloge prikažite podatke učitelja za vsakega študenta na strani s seznamom študentov.

Naredite enako kot v prejšnji nalogi, vendar za posamezno stran študenta.

Slovenščina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Za delovanje spletnega mesta, analitiko in personalizacijo uporabljamo piškotke. Obdelava podatkov poteka v skladu s Politiko zasebnosti.
sprejmi vse nastavi zavrni