⊗jsrtPmCpPS 85 of 112 menu

Tilojen välittäminen lapsikomponentteihin Reactissa

Oletetaan, että meillä on tuotetaulukko:

const initProds = [ {id: id(), name: 'product1', cost: 100}, {id: id(), name: 'product2', cost: 200}, {id: id(), name: 'product3', cost: 300}, ];

Oletetaan, että tämä taulukko sijaitsee komponentissa Products. Tallennetaan nämä tuotteet komponentin tilaan:

function Products() { const [prods, setProds] = useState(initProds); }

Kierretään nyt tuotteet silmukalla ja tulostetaan ne johonkin rakenteeseen:

function Products() { const [prods, setProds] = useState(initProds); const items = prods.map(prod => { return <div key={prod.id}> name: <span>{prod.name}</span>, cost: <span>{prod.cost}</span> </div>; }); return <div> {items} </div>; }

Kuten näette, map-silmukan sisältö on melko monimutkainen, erityisesti jos tuotteen rakenne kasvaa tulevaisuudessa. Tällainen monimutkaisuus vaikeuttaa koodin lukemista, ymmärtämistä ja ylläpitoa.

Olisi parempi siirtää tuotteen näyttämisestä vastaava koodi omaan komponenttiin. Nimetään se Product. Tässä on komponenttimme koodi:

function Product({ name, cost }) { return <div> name: <span>{name}</span>, cost: <span>{cost}</span> </div>; }

Käytetään nyt komponentin Products sisällä map-silmukassa lapsikomponentteja Product:

function Products() { const [prods, setProds] = useState(initProds); const items = prods.map(prod => { return <Product key ={prod.id} name={prod.name} cost={prod.cost} />; }); return <div> {items} </div>; }

Kuten näette, silmukan koodi on nyt yksinkertaistunut ja siitä on tullut helpommin ymmärrettävä. Lisäksi tuotteen näyttämisestä vastaa nyt erillinen komponentti, jossa voimme tehdä ja myöhemmin muokata tuotteiden rakennetta.

Teknisesti ottaen käy niin, että vanhempakomponentilla on tila, jossa on dataa, ja lapsikomponentit saavat nämä tiedot propseina ja näyttävät ne haluamallamme tavalla.

Komponentin Users tilassa on seuraava taulukko:

const initUsers = [ {id: id(), name: 'user1', surname: 'surn1', age: 30}, {id: id(), name: 'user2', surname: 'surn2', age: 31}, {id: id(), name: 'user3', surname: 'surn3', age: 32}, ];

Kierrä tämä taulukko silmukalla ja näytä kaikki käyttäjät näytöllä. Luo käyttäjän näyttämistä varten erillinen komponentti User.

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ää