Для интеграции Ant Design с React-приложением используется
официальный пакет antd. Установка выполняется через npm или
yarn:
npm install antd
# или
yarn add antd
После установки необходимо подключить глобальные стили. Это можно
сделать в файле index.js или App.js:
import 'antd/dist/reset.css'; // сброс стилей и подключение темы по умолчанию
Использование компонентов Ant Design предполагает импорт их напрямую в нужных файлах:
import { Button, Input, Table } from 'antd';
Ant Design поддерживает динамическую настройку темы через Less. Для
React-проектов с Create React App рекомендуется использовать
craco или react-app-rewired для изменения
конфигурации Webpack и подключения поддержки Less:
// craco.config.js
const CracoLessPlugin = require('craco-less');
module.exports = {
plugins: [
{
plugin: CracoLessPlugin,
options: {
lessLoaderOptions: {
lessOptions: {
modifyVars: { '@primary-color': '#1DA57A' },
javascriptEnabled: true,
},
},
},
},
],
};
После этого все компоненты будут использовать заданную палитру.
Button – базовый компонент для кнопок. Поддерживает разные типы и размеры:
<Button type="primary" size="large">Основная кнопка</Button>
<Button type="dashed">Дефолтная кнопка</Button>
<Button type="link">Ссылка</Button>
Input – компонент ввода текста с возможностью добавления иконок и управления состоянием:
<Input placeholder="Введите текст" prefix={<UserOutlined />} />
Form – мощный инструмент для построения форм с валидацией. Интеграция с React выглядит так:
<Form
name="basic"
labelCol={{ span: 8 }}
wrapperCol={{ span: 16 }}
initialValues={{ remember: true }}
onFin ish={onFinish}
onFinishFai led={onFinishFailed}
>
<Form.Item
label="Имя пользователя"
name="username"
rules={[{ required: true, message: 'Введите имя пользователя!' }]}
>
<Input />
</Form.Item>
<Form.Item
label="Пароль"
name="password"
rules={[{ required: true, message: 'Введите пароль!' }]}
>
<Input.Password />
</Form.Item>
<Form.Item wrapperCol={{ offset: 8, span: 16 }}>
<Button type="primary" htmlType="submit">Войти</Button>
</Form.Item>
</Form>
Table – компонент для отображения табличных данных с поддержкой сортировки, фильтрации и пагинации:
const columns = [
{ title: 'Имя', dataIndex: 'name', key: 'name' },
{ title: 'Возраст', dataIndex: 'age', key: 'age', sorter: (a, b) => a.age - b.age },
{ title: 'Адрес', dataIndex: 'address', key: 'address' },
];
const data = [
{ key: '1', name: 'Иван', age: 32, address: 'Москва' },
{ key: '2', name: 'Мария', age: 28, address: 'Санкт-Петербург' },
];
<Table columns={columns} dataSource={data} pagination={{ pageSize: 5 }} />
Ant Design тесно интегрирован с React-хуками. Для управления
состоянием форм или модальных окон часто используют
useState и useEffect:
const [isModalVisible, setIsModalVisible] = useState(false);
const showModal = () => setIsModalVisible(true);
const handleOk = () => setIsModalVisible(false);
const handleCancel = () => setIsModalVisible(false);
<Modal title="Пример модального окна" visible={isModalVisible} onOk={handleOk} onCan cel={handleCancel}>
<p>Содержимое модального окна</p>
</Modal>
<Button onCl ick={showModal}>Открыть окно</Button>
Формы также можно контролировать через Form.useForm:
const [form] = Form.useForm();
form.setFieldsValue({ username: 'Иван' });
Списки и карусели: компоненты List и
Carousel позволяют создавать визуально привлекательные
элементы интерфейса с поддержкой прокрутки и адаптивного дизайна.
Грид-система: Ant Design использует 24-колоночную сетку для построения адаптивных макетов. Основные компоненты:
<Row gutter={16}>
<Col span={12}><div>Левая колонка</div></Col>
<Col span={12}><div>Правая колонка</div></Col>
</Row>
Меню и навигация: компоненты Menu,
Breadcrumb и Tabs позволяют организовать
удобную навигацию внутри приложения.
<Menu mode="horizontal" defaultSelectedKeys={['1']}>
<Menu.Item key="1">Главная</Menu.Item>
<Menu.Item key="2">Профиль</Menu.Item>
<Menu.Item key="3">Настройки</Menu.Item>
</Menu>
Для снижения размера бандла рекомендуется использовать tree-shaking и импорт отдельных компонентов:
import Button from 'antd/es/button';
import 'antd/es/button/style/css';
Это позволяет подключать только необходимые модули, сокращая время загрузки приложения.
Ant Design полностью поддерживает TypeScript. Для компонентов существуют готовые типы:
import { Button, ButtonProps } from 'antd';
const MyButton: React.FC<ButtonProps> = (props) => <Button {...props} />;
Использование строгих типов для Form и Table позволяет обеспечить корректность данных и автокомплит в редакторе.
Modal, Drawer, Notification, Message — компоненты для диалогов и уведомлений. Пример уведомления:
import { notification } from 'antd';
const openNotification = () => {
notification.open({
message: 'Успех',
description: 'Операция выполнена успешно',
duration: 3,
});
};
<Button onCl ick={openNotification}>Показать уведомление</Button>
Message подходит для кратких всплывающих уведомлений:
import { message } from 'antd';
const success = () => message.success('Данные сохранены!');
<Button onCl ick={success}>Сохранить</Button>
Ant Design легко комбинируется с fetch,
axios и React Query. Пример загрузки данных для
таблицы:
const [data, setData] = useState([]);
const [loading, setLoading] = useState(true);
useEffect(() => {
fetch('https://api.example.com/users')
.then(res => res.json())
.then(result => {
setData(result);
setLoading(false);
});
}, []);
<Table columns={columns} dataSource={data} loading={loading} />
Использование компонента Spin позволяет отображать
индикатор загрузки:
<Spin spinning={loading}>
<Table columns={columns} dataSource={data} />
</Spin>
Ant Design имеет встроенную поддержку адаптивного дизайна через
Grid и пропсы responsive для компонентов,
таких как Table, Col и Menu. Это
позволяет строить интерфейсы, корректно отображающиеся на любых
устройствах.
<Col xs={24} sm={12} md={8} lg={6}>
<div>Адаптивная колонка</div>
</Col>
Эта структура позволяет использовать Ant Design в React-приложениях максимально эффективно, обеспечивая единообразный интерфейс, гибкую кастомизацию и высокую производительность при построении сложных веб-приложений.