Создание дочерних компонентов в React
В атрибуты тегов компонента можно передавать не только строки, но и выполнять вставку переменных и констант:
function App() {
const name = 'product';
const cost = '100';
return <div>
<Product name={name} cost={cost} />
</div>;
}
Давайте сделаем сразу несколько продуктов:
function App() {
const name1 = 'product1';
const cost1 = '100';
const name2 = 'product2';
const cost2 = '100';
const name3 = 'product3';
const cost3 = '100';
return <div>
<Product name={name1} cost={cost1} />
<Product name={name2} cost={cost2} />
<Product name={name3} cost={cost3} />
</div>;
}
Массив
Пусть у нас есть массив с продуктами:
const prods = [
{id: id(), name: 'product1', cost: 100},
{id: id(), name: 'product2', cost: 200},
{id: id(), name: 'product3', cost: 300},
];
Давайте выведем на экран три компонента Product, передав им в пропсы данные из нашего массива. Пока не будем использовать цикл, а просто будем обращаться к элементам массива и объекта:
function App() {
return <div>
<Product name={prods[0].name} cost={prods[0].cost} />
<Product name={prods[1].name} cost={prods[1].cost} />
<Product name={prods[2].name} cost={prods[2].cost} />
</div>;
}
Компоненты в цикле
Давайте теперь выведем наши компоненты в цикле. Используем для этого метод map:
function App() {
const result = prods.map(prod => {
return <Product name={prod.name} cost={prod.cost} />;
});
return <div>
{result}
</div>;
}
Не забудем указать атрибут key:
function App() {
const result = prods.map(prod => {
return <Product key={prod.id} name={prod.name} cost={prod.cost} />;
});
return <div>
{result}
</div>;
}