Компонент List в библиотеке Ant Design предназначен для отображения упорядоченных или неупорядоченных списков элементов с поддержкой кастомизации и встроенных возможностей, таких как пагинация, загрузка данных и оформление элементов. Он идеально подходит для отображения коллекций однотипных данных: новостей, карточек пользователей, задач и других элементов интерфейса.
Базовый импорт компонента осуществляется следующим образом:
import { List } from 'antd';
Простейший список создаётся с использованием свойства
dataSource и функции renderItem:
const data = [
'Элемент 1',
'Элемент 2',
'Элемент 3',
];
<List
dataSource={data}
renderItem={item => (
<List.Item>{item}</List.Item>
)}
/>
Компонент List.Item поддерживает вложенные элементы,
дополнительные действия и метаданные. Для отображения сложных объектов
удобно использовать List.Item.Meta:
import { Avatar, List } from 'antd';
const users = [
{ name: 'Иван Иванов', description: 'Frontend разработчик', avatar: 'https://i.pravatar.cc/150?img=1' },
{ name: 'Мария Петрова', description: 'Backend разработчик', avatar: 'https://i.pravatar.cc/150?img=2' },
];
<List
itemLayout="horizontal"
dataSource={users}
renderItem={user => (
<List.Item
actions={[<a key="edit">Редактировать</a>, <a key="delete">Удалить</a>]}
>
<List.Item.Meta
avatar={<Avatar src={user.avatar} />}
title={user.name}
description={user.description}
/>
</List.Item>
)}
/>
Ключевые свойства List.Item.Meta:
Списки с большим количеством элементов удобно разбивать на страницы.
Для этого используется свойство pagination:
<List
dataSource={Array.from({ length: 50 }, (_, i) => `Элемент ${i + 1}`)}
renderItem={item => <List.Item>{item}</List.Item>}
pagination={{
pageSize: 10,
showSizeChanger: true,
onChange: page => console.log('Текущая страница:', page),
}}
/>
Важные моменты при пагинации:
Горизонтальный и вертикальный список Свойство
itemLayout позволяет выбирать направление элементов:
<List itemLayout="vertical">...</List>
<List itemLayout="horizontal">...</List>Списки с обложками (grid) Использование сетки для отображения карточек:
<List
grid={{ gutter: 16, column: 4 }}
dataSource={data}
renderItem={item => (
<List.Item>
<div style={{ padding: 20, background: '#fafafa', textAlign: 'center' }}>{item}</div>
</List.Item>
)}
/>
Параметры сетки (grid):
Компонент поддерживает отображение состояния загрузки с помощью
свойства loading:
<List
dataSource={data}
renderItem={item => <List.Item>{item}</List.Item>}
loading={{ spinning: true, tip: 'Загрузка данных...' }}
/>
Особенности loading:
Footer и Header списка
<List
header={<div>Заголовок списка</div>}
footer={<div>Подвал списка</div>}
dataSource={data}
renderItem={item => <List.Item>{item}</List.Item>}
/>Встроенные действия для элементов Любое действие
можно добавить в массив actions внутри
List.Item. Например, кнопки, ссылки или иконки.
Настройка разделителей и стилизация С помощью
CSS или стилей Ant Design можно кастомизировать границы и отступы,
используя классы ant-list-item и
ant-list-item-meta.
pagination или
виртуализированные списки (react-window) для оптимизации
производительности.grid, чтобы элементы красиво выстраивались по сетке.Meta) позволяют разделять визуальные и
текстовые элементы, сохраняя чистоту кода.actions с событиями клика для создания
интерактивных списков.Компонент List является универсальным инструментом для отображения коллекций в интерфейсах на базе React, обеспечивая при этом гибкость и богатую кастомизацию без необходимости вручную управлять структурой элементов.