Список карточек
map() умеет превращать данные в компоненты, а не только в li. В уроке про пропсы вы писали отдельный BandCard для каждой группы. Для пяти групп это пять строк, для пятидесяти — пятьдесят, и для каждой новой группы в данных нужна ещё одна. Один map() покажет все:
{bands.map((band) => (
<BandCard key={band.id} band={band} />
))}Для каждой группы map() возвращает BandCard и передаёт ему группу в пропсах. Ключ ставится на элемент, который возвращает map(): здесь это BandCard. Элементы списка — это карточки, а не article внутри них.
Данные теперь лежат в отдельном файле, bands.js. Это обычный JavaScript-файл без JSX, который экспортирует массив: export const bands = [ … ];. App.jsx импортирует его именованным импортом, как вы знаете из урока про компоненты: import { bands } from "./bands.js";. Когда данные лежат в отдельном файле, компоненты остаются короткими, а одни и те же данные могут импортировать сразу несколько компонентов.
Типичные ошибки:
- Ключ внутри
BandCard, на егоarticle. React нужен ключ у элементов списка, а вBandCardсписка нет, там одинarticle. Консоль продолжает предупреждать. - Чтение ключа в
BandCard.keyне входит в пропсы, поэтомуfunction BandCard({ key })получитundefined, а консоль предупредит, чтоkey— не проп. Если карточке нужен идентификатор, он есть вband.id.
Задание
- 1
Замените два
BandCardоднимmap(), который показывает карточку для каждой группы изbands. - 2
Дайте каждой карточке ключ, чтобы в консоли не было предупреждения.