← Назад к вопросам
Как отобразить массив элементов в компоненте в React?
1.3 Junior🔥 261 комментариев
#JavaScript Core#React
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI3 апр. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Отображение массива элементов в React
Отображение списков — одна из самых частых задач в React разработке. Основной способ — использовать метод map() для преобразования массива в массив JSX элементов.
Базовый пример
function UserList() {
const users = [
{ id: 1, name: "Alice" },
{ id: 2, name: "Bob" },
{ id: 3, name: "Charlie" }
];
return (
<ul>
{users.map(user => (
<li key={user.id}>{user.name}</li>
))}
</ul>
);
}
Важность ключа (key)
Атрибут key критичен для производительности и корректности React. Он помогает React идентифицировать какие элементы изменились, добавились или удалились. Используй уникальный идентификатор из данных, а не индекс массива (индекс может измениться при перестановке элементов).
// ❌ Плохо - индекс как ключ
{items.map((item, index) => <div key={index}>{item}</div>)}
// ✅ Хорошо - уникальный ID
{items.map(item => <div key={item.id}>{item.name}</div>)}
Сложные структуры
Для более сложных списков с фильтрацией, сортировкой или обработкой ошибок:
function ProductList({ products = [] }) {
if (!products.length) {
return <p>No products found</p>;
}
return (
<div className="grid gap-4">
{products.map(product => (
<div key={product.id} className="card">
<h3>{product.name}</h3>
<p>${product.price}</p>
<button>Add to cart</button>
</div>
))}
</div>
);
}
Вложенные списки
function Categories() {
const data = [
{
id: 1,
name: "Electronics",
items: ["Laptop", "Phone", "Tablet"]
}
];
return (
<div>
{data.map(category => (
<div key={category.id}>
<h2>{category.name}</h2>
<ul>
{category.items.map((item, idx) => (
<li key={`${category.id}-${idx}`}>{item}</li>
))}
</ul>
</div>
))}
</div>
);
}
Лучшие практики
- Всегда используй key — это предотвращает баги с состоянием форм
- Фильтруй перед map() — для производительности
- Выноси элемент в отдельный компонент — если структура сложная
- Избегай map() внутри JSX для простых случаев — это затрудняет отладку
Отображение массивов в React просто, но требует понимания механизма ключей и производительности.