Комментарии (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 просто, но требует понимания механизма ключей и производительности.
Похожие вопросы
- Что такое Responsive Web-страница?
- Все ли будешь хранить в state
- Что такое env?
- Где используется деструктуризация?
- Как придумываешь решение поставленной задачи?
- К чему стремишься в работе
- Почему псевдоэлементы так называются?
- Что из перечисленного может заблокировать отображение страницы: картинки, JS файлы, CSS файлы, Favicon, шрифты?
- Что будет итоговыми данными Promise при использовании десяти then?
- Какие знаешь методы жизненного цикла?
- Дожидается ли метод Promise.all выполнения всех Promise
- Что такое async/await и как они связаны с Promise?
- Для чего нужен хук?
- Какие плюсы и минусы типизации TypeScript?
- Как создать новый процесс в Js?
- Какую проблему решает useContext?
- Чем занимаешься во внерабочее время?
- Какие типы данных можно передать по ссылке?
- Больше данных хранится в cookie или в localStorage
- Вел ли проекты самостоятельно