Пусть у нас есть массив объектов с продуктами:
const prods = [
{name: 'product1', cost: 100},
{name: 'product2', cost: 200},
{name: 'product3', cost: 300},
];
function App() {
}
Давайте выведем каждый продукт в своем абзаце:
function App() {
const res = prods.map(function(item) {
return <p>{item.name} {item.cost}</p>;
});
return <div>
{res}
</div>;
}
Можно название и цену продукта положить в отдельный тег, например, вот так:
function App() {
const res = prods.map(function(item) {
return <p>
<span>{item.name}</span>:
<span>{item.cost}</span>
</p>;
});
return <div>
{res}
</div>;
}
Не забудем добавить атрибут key:
function App() {
const res = prods.map(function(item, index) {
return <p key={index}>
<span>{item.name}</span>:
<span>{item.cost}</span>
</p>;
});
return <div>
{res}
</div>;
}
В компоненте App дан следующий массив:
const users = [
{name: 'user1', surn: 'surn1', age: 30},
{name: 'user2', surn: 'surn2', age: 31},
{name: 'user3', surn: 'surn3', age: 32},
];
Выведите элементы этого массива в виде списка
ul
.
Ключи через id
В приведенном выше коде в атрибут key
мы добавляли порядковый номер элемента в
массиве. На самом деле такая практика является
плохой и ей следует пользоваться лишь в крайнем
случае.
Дело в том, что при сортировке массива у элементов станут другие ключи и React не сможет правильно отслеживать связь между элементами массива и соответствующими тегами.
Более хорошей практикой будет добавить каждому продукту уникальный идентификатор, который и будет использоваться в качестве ключа.
Давайте в нашем массиве каждому продукту
добавим свойство id
с номером нашего
продукта:
const prods = [
{id: 1, name: 'product1', cost: 100},
{id: 2, name: 'product2', cost: 200},
{id: 3, name: 'product3', cost: 300},
];
Теперь в качестве ключа используем этот id
:
function App() {
const res = prods.map(function(item) {
return <p key={item.id}>
<span>{item.name}</span>:
<span>{item.cost}</span>
</p>;
});
return <div>
{res}
</div>;
}
Модифицируйте предыдущую задачу, добавив
в массив id
и использовав их в качестве
значений атрибута key
.