⊗jsrtPmCpPS 85 of 112 menu

Подаване на състояния към дъщерни компоненти в React

Да предположим, че имаме масив с продукти:

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

Да предположим, че този масив се намира в компонента Products. Запишем тези продукти в състоянието на компонента:

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

Сега нека да обходим продуктите в цикъл и да ги изведем в някакъв вид 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>; }

Както виждате, съдържанието на нашия цикъл map е достатъчно сложно, особено ако HTML-а на продукта се разрасне в бъдеще. Такава сложност затруднява четенето, разбирането и поддръжката на кода.

Ще е по-добре да изнесем кода, отговарящ за показването на продукта в отделен компонент. Ще го наречем Product. Ето кода на нашия компонент:

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

Сега нека вътре в компонента Products в цикъла map да използваме дъщерни компоненти 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>; }

Както виждате, сега кодът на цикъла се опрости и стана по-разбираем. Освен това, сега за показването на продукта отговаря отделен компонент, в който можем да правим, а след това да редактираме HTML-а на продуктите.

Технически се получава, че родителският компонент има състояние с данни, а дъщерните компоненти получават тези данни под формата на props и ги показват по начин, който ни е необходим.

В състоянието на компонента Users е даден следният масив:

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

Обходете този масив в цикъл и изведете всички потребители на екрана. Създайте за показването на потребител отделен компонент User.

Български
AfrikaansAzərbaycanবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне