Вывод массива объектов в JSX

Пусть у нас есть массив объектов с продуктами:

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.