Компонент Pagination в библиотеке Ant Design используется для организации постраничного отображения данных, упрощая навигацию по спискам и таблицам. Он предоставляет гибкие возможности настройки, включая размер страницы, текущее положение, общее количество страниц и пользовательские элементы управления.
import { Pagination } from 'antd';
<Pagination defaultCurrent={1} total={50} />
В этом примере создаётся пагинация с 50 элементами и текущей страницей 1. По умолчанию компонент использует горизонтальную ориентацию и стандартный размер кнопок.
showSizeChanger.Пример с обработкой события смены страницы:
<Pagination
defaultCurrent={1}
total={100}
pageSize={10}
onCha nge={(page, pageSize) => {
console.log('Страница:', page, 'Размер страницы:', pageSize);
}}
/>
Пагинацию можно делать компактной или крупной, используя свойство size:
<Pagination size="small" total={50} />
<Pagination size="large" total={50} />
Также поддерживаются дополнительные элементы управления:
<Pagination
total={85}
showTotal={(total) => `Всего элементов: ${total}`}
/>
Компонент Table в Ant Design тесно интегрирован с Pagination. Настройка пагинации внутри таблицы происходит через свойство pagination:
import { Table } from 'antd';
const columns = [
{ title: 'Имя', dataIndex: 'name', key: 'name' },
{ title: 'Возраст', dataIndex: 'age', key: 'age' },
];
const data = [
{ key: 1, name: 'Иван', age: 32 },
{ key: 2, name: 'Мария', age: 28 },
// ...
];
<Table
columns={columns}
dataSource={data}
pagination={{ pageSize: 5, showSizeChanger: true }}
/>
В этом примере таблица автоматически делит данные на страницы по 5 элементов и предоставляет пользователю выбор размера страницы.
defaultCurrent и defaultPageSize. Компонент
самостоятельно отслеживает состояние страницы.current и
pageSize. Состояние страницы полностью контролируется
внешним кодом, например, через useState в React:import { useState } from 'react';
import { Pagination } from 'antd';
const ControlledPagination = () => {
const [current, setCurrent] = useState(1);
return (
<Pagination
current={current}
total={50}
onCha nge={(page) => setCurrent(page)}
/>
);
};
Ant Design позволяет изменять отображение кнопок и навигации:
page, type,
originalElement.Пример замены кнопок «prev» и «next»:
<Pagination
total={50}
itemRender={(page, type, originalElement) => {
if (type === 'prev') return <a>Назад</a>;
if (type === 'next') return <a>Вперед</a>;
return originalElement;
}}
/>
Для работы с большим количеством данных используется серверная пагинация. Вместо загрузки всех элементов сразу, компонент запрашивает данные по мере смены страницы.
const fetchData = async (page, pageSize) => {
const response = await fetch(`/api/users?page=${page}&limit=${pageSize}`);
const data = await response.json();
return data;
};
<Pagination
current={currentPage}
total={totalItems}
pageSize={pageSize}
onCha nge={async (page, size) => {
setCurrentPage(page);
const data = await fetchData(page, size);
setTableData(data);
}}
/>
Таким образом достигается оптимизация работы с большим количеством данных и сокращение нагрузки на клиент.
current и pageSize только при управляемой
логике.pageSize автоматически пересчитывает количество
страниц.responsive
или size="small" для мобильных устройств делает интерфейс
удобнее.Pagination в Ant Design — это мощный инструмент для постраничного управления данными с гибкой настройкой визуальных элементов, интеграцией с таблицами и поддержкой как локальной, так и серверной логики.