Для использования Ant Design в проекте на Next.js сначала необходимо установить пакет через npm или yarn:
npm install antd
# или
yarn add antd
После установки следует подключить глобальные стили Ant
Design. В Next.js это делается через файл _app.js
или _app.tsx:
import 'antd/dist/reset.css'; // начиная с версии 5 Ant Design использует reset.css
import '../styles/globals.css';
import { ConfigProvider } from 'antd';
function MyApp({ Component, pageProps }) {
return (
);
}
export default MyApp;
Использование ConfigProvider позволяет централизованно настраивать тему, локализацию и глобальные параметры компонентов.
Компонент Button поддерживает различные типы и размеры.
Основные свойства:
type — определяет стиль кнопки (primary,
default, dashed, text,
link).size — размер кнопки (small,
middle, large).loading — отображает индикатор загрузки.import { Button } from 'antd';
Компонент Form совместно с Input,
Select, Checkbox и другими позволяет создавать
сложные формы с валидацией.
import { Form, Input, Button, Sel ect } from 'antd';
В Next.js формы работают на клиентской стороне, но при необходимости
можно использовать getServerSideProps или API-роуты для
обработки данных на сервере.
Ant Design использует 24-колоночную сетку для построения адаптивного интерфейса. Основные компоненты:
Row — строка сетки, может содержать отступы и
выравнивание.Col — колонка сетки, управляется свойствами
span, offset, order.import { Row, Col } fr om 'antd';
Колонка 1
Колонка 2
Колонка 3
gutter задаёт отступы между колонками. Сетка
автоматически адаптируется под разные размеры экранов с использованием
брейкпоинтов (xs, sm, md,
lg, xl).
Ant Design версии 5 поддерживает динамическую тему через
ConfigProvider и CSS-переменные. Настройка базовых
цветов:
import { ConfigProvider, theme } fr om 'antd';
Для Next.js можно динамически менять тему в зависимости от состояния приложения или предпочтений пользователя.
Modal и notification обеспечивают интерактивную работу с пользователем.
import { Modal, Button, notification } fr om 'antd';
import { useState } fr om 'react';
const Example = () => {
const [visible, setVisible] = useState(false);
const openNotification = () => {
notification.success({
message: 'Успех',
description: 'Операция выполнена успешно.',
});
};
return (
<>
setVisible(false)}
onCan cel={() => setVisible(false)}
>
Содержимое модального окна
>
);
};
Модальные окна можно интегрировать с формами и API-роутами для полноценного взаимодействия с сервером.
Ant Design предоставляет библиотеку @ant-design/icons, которую можно использовать для кнопок, меню и уведомлений:
import { UserOutlined, SearchOutlined } fr om '@ant-design/icons';
import { Input } from 'antd';
} />
}>Профиль
Иконки легко комбинируются с другими компонентами и адаптируются под размеры и цвета темы.
babel-plugin-import для уменьшения размера бандла.next/dynamic) для модальных окон, таблиц и тяжелых
элементов.ssr: false) для
компонентов, требующих клиентской среды, чтобы избежать ошибок при
Hydration.import dynamic from 'next/dynamic';
const DynamicTable = dynamic(() => import('./TableComponent'), { ssr: false });
useEffect
для синхронизации с клиентом, сохраняя производительность SSR.Table — мощный инструмент для работы с данными.
Поддерживает сортировку, фильтрацию, пагинацию:
import { Table } from 'antd';
const columns = [
{ title: 'Имя', dataIndex: 'name', key: 'name' },
{ title: 'Возраст', dataIndex: 'age', key: 'age', sorter: (a, b) => a.age - b.age },
];
const data = [
{ key: '1', name: 'Иван', age: 32 },
{ key: '2', name: 'Мария', age: 28 },
];
В Next.js таблицы можно подключать к API-роутам для динамического получения данных с сервера, сохраняя SSR для начальной загрузки страницы.
Для поддержки разных языков используется ConfigProvider
с настройкой locale:
import ruRU from 'antd/locale/ru_RU';
import { ConfigProvider, DatePicker } from 'antd';
Все стандартные компоненты Ant Design автоматически подстраиваются под выбранную локализацию.
Menu и Dropdown обеспечивают создание удобной навигации:
import { Menu, Dropdown, Button } from 'antd';
const menu = (
);
В Next.js их можно использовать совместно с next/link
для клиентской навигации и поддержания маршрутизации без перезагрузки
страницы.