⊗jsrtPmCpPS 85 of 112 menu

Przekazywanie stanów do komponentów potomnych w React

Załóżmy, że mamy daną tablicę z produktami:

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

Załóżmy, że ta tablica znajduje się w komponencie Products. Zapiszmy te produkty w stanie komponentu:

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

Teraz przeiterujmy produkty pętlą i wyświetlmy je w jakimś kodzie HTML:

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>; }

Jak widzicie, zawartość naszej pętli map jest dość złożona, szczególnie jeśli kod HTML produktu rozrośnie się w przyszłości. Taka złożoność utrudnia czytanie, zrozumienie i utrzymanie kodu.

Lepiej będzie wynieść kod odpowiedzialny za wyświetlanie produktu do oddzielnego komponentu. Nazwijmy go Product. Oto kod naszego komponentu:

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

Teraz wewnątrz komponentu Products w pętli map użyjmy komponentów potomnych 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>; }

Jak widzicie, kod pętli uprościł się i stał się bardziej zrozumiały. Poza tym, teraz za wyświetlanie produktu odpowiada oddzielny komponent, w którym możemy tworzyć, a potem edytować kod HTML produktów.

Technicznie otrzymujemy, że komponent nadrzędny ma stan z danymi, a komponenty potomne otrzymują te dane w postaci propsów i wyświetlają je w pożądany przez nas sposób.

W stanie komponentu Users dana jest następująca tablica:

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}, ];

Przeiteruj tę tablicę pętlą i wyświetl wszystkich użytkowników na ekranie. Utwórz do wyświetlania użytkownika oddzielny komponent User.

Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć