Next.js и Ant Design

Для использования 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)

Компонент Button поддерживает различные типы и размеры. Основные свойства:

  • type — определяет стиль кнопки (primary, default, dashed, text, link).
  • size — размер кнопки (small, middle, large).
  • loading — отображает индикатор загрузки.
import { Button } from 'antd';



Формы (Form) и элементы ввода

Компонент Form совместно с Input, Select, Checkbox и другими позволяет создавать сложные формы с валидацией.

import { Form, Input, Button, Sel ect } from 'antd';

console.log(values)} >

В Next.js формы работают на клиентской стороне, но при необходимости можно использовать getServerSideProps или API-роуты для обработки данных на сервере.


Работа с сеткой (Grid)

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';

} />

Иконки легко комбинируются с другими компонентами и адаптируются под размеры и цвета темы.


Оптимизация для Next.js

  • Импортировать только необходимые компоненты и стили через 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 для клиентской навигации и поддержания маршрутизации без перезагрузки страницы.

javascript42 — изучаем JavaScript вместе