⊗jsrxPmRDMDO 30 of 57 menu

Tiedon uudelleenkäyttö Redux-slicesta

Edellisellä tunnilla lisäsimme tuotteen lisäämisen lomakkeeseen toisen kentän pudotusvalikolla myyjän valitsemiseksi, joka julkaisee sen. Oletetaan, että nyt meidän on myös näytettävä tämä tieto muutamassa muussa sovelluksen kohdassa. Sitä varten emme tällä kertaa kopioi koodia, vaan luomme yksinkertaisen erillisen komponentin, josta poimimme tiedot slicesta ja näytämme ne sovelluksen osissa, joissa tarvitsemme.

Avataan tuotesovelluksemme. Luodaan nyt kansioon products toinen tiedosto SellerOfProd.jsx. Aluksi tuodaan useSelector -hook, jonka avulla saamme tarvittavan tuotteen sisältävän slicen:

import { useSelector } from 'react-redux'

Poimitaan sitten storesta tarvittava tuote myyjän id:n perusteella, jonka välitämme uudelle komponentille propsien kautta:

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

Ja jos sellainen myyjä on olemassa, palautamme hänen nimensä, ja jos ei, palautamme 'unknown':

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

Tuodaan nyt uusi komponentti tiedostoon ProductsList.jsx ja lisätään se ProductsList -funktioon heti tuotteen nimen otsikon jälkeen. Kuten näette, annoimme sille id:n propsien kautta:

<SellerOfProd sellerId={product.seller} />

Nyt, jos käynnistämme sovelluksemme, lisäämme uuden tuotteen ja löydämme sen listasta, näemme, että siihen on liitetty myyjä, ja automaattisesti sovelluksen käynnistyessä lisätyillä tuotteilla on 'unknown'.

Pieni sivuhuomio: jos VS Code -editorissasi eslint valittaa sellerId:stä, mutta sovellus toimii, voit ohittaa sen toistaiseksi tai avata sovelluksesi tiedoston .eslintrc.cjs ja lisätä rules:iin "react/prop-types": "off".

Itsestään selvästi haluaisimme lisätä myyjän tiedot myös tuotesivulle. Lisätään siis ProductPage:n renderöinnissä tuotteen nimen otsikon jälkeen jälleen tämä rivi ja tarkistetaan, että kaikki toimii:

<SellerOfProd sellerId={product.seller} />

Avaa opiskelijasovelluksesi. Oppitunnin materiaalia tutkittuasi, luo kansioon students tiedosto komponentille TeacherForStudent. Lopputuloksena komponentin tulee palauttaa opettajan koko nimi, ja vieressä suluissa aine, jota hän opettaa. Tarvittavan opettajan löydät useSelector -hookin avulla. Jos opettajaa tietylle opiskelijalle ei löydy, näytä 'anonym'.

Edellisessä tehtävässä saadun komponentin avulla näytä kunkin opiskelijan opettajan tiedot opiskelijalistaa sisältävällä sivulla.

Tee sama kuin edellisessä tehtävässä, mutta yksittäisen opiskelijan sivulle.

Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää