В библиотеке Ant Design (AntD) все компоненты строятся на единых принципах проектирования, что обеспечивает консистентный внешний вид и поведение. Основные свойства компонентов можно разделить на несколько категорий: управление состоянием, стилизация, события, доступность и композиция. Понимание этих свойств критично для эффективного использования библиотеки в больших проектах.
Большинство компонентов AntD поддерживает контролируемый и неконтролируемый режимы.
Контролируемый компонент управляется извне через
пропсы, например value для ввода текста
(Input) или selectedKeys для компонентов
навигации (Menu). Изменение состояния происходит через
callback-функции, например onChange.
<Input value={text} onCha nge={(e) => setText(e.target.value)} />Неконтролируемый компонент самостоятельно хранит
внутреннее состояние и обновляет его без участия внешнего кода.
Например, компоненты вроде Checkbox могут использовать
defaultChecked.
Ключевой момент: выбор между контролируемым и неконтролируемым режимом зависит от необходимости синхронизации состояния с внешними данными или формой.
Компоненты AntD поддерживают гибкую настройку внешнего вида:
Проп className позволяет добавлять
свои CSS-классы:
<Button className="my-custom-button">Нажать</Button>Проп style обеспечивает
inline-стили:
<Card style={{ width: 300, backgroundColor: '#f0f2f5' }} />Тема и глобальные переменные. AntD использует
Less-переменные для настройки цветов, размеров, теней и шрифтов.
Изменение темы возможно через конфигурацию
ConfigProvider:
import { ConfigProvider } from 'antd';
<ConfigProvider theme={{ token: { colorPrimary: '#1DA57A' } }}>
<Button>Тематическая кнопка</Button>
</ConfigProvider>Важно: использование ConfigProvider
позволяет изменять тему глобально без необходимости модификации
отдельных компонентов.
Практически каждый компонент предоставляет набор событий, позволяющих реагировать на действия пользователя:
Input, Select, DatePicker).Пример использования:
<Select onCha nge={(value) => console.log(value)} />
Совет: при работе с формами AntD рекомендуется
использовать компоненты Form.Item совместно с
контролируемыми элементами, чтобы события обрабатывались
централизованно.
AntD придерживается стандартов WCAG и ARIA, что делает компоненты доступными для пользователей с особыми потребностями.
role,
aria-label, aria-checked там, где это
необходимо.Tooltip и Modal корректно
взаимодействуют с экранными читалками.Пример:
<Switch aria-label="Включить уведомления" defaultChecked />
AntD предоставляет возможность гибкой композиции компонентов для построения сложных интерфейсов:
Card, Layout,
Space, Row/Col позволяют
организовать расположение дочерних элементов.Menu может содержать SubMenu и
Menu.Item, а Form.Item — любые поля
ввода.children: большинство
компонентов поддерживают вложенные элементы через children,
обеспечивая кастомизацию содержимого.Пример:
<Card title="Профиль">
<p>Имя: Иван</p>
<Button type="primary">Редактировать</Button>
</Card>
Практически у всех компонентов AntD есть ряд системных пропсов, которые повторяются:
id – уникальный идентификатор компонента.className – CSS-классы.style – inline-стили.disabled – блокировка взаимодействия.loading – для кнопок и некоторых интерактивных
элементов, отображает индикатор загрузки.key – идентификатор при рендере списков и массивов
компонентов.Эти свойства позволяют управлять поведением и внешним видом компонентов в любой части приложения.
| Категория | Основные свойства | Пример использования |
|---|---|---|
| Управление состоянием | value, defaultValue, onChange | <Input value={text} onCha nge={...} /> |
| Стилизация | className, style, theme | <Button className="btn" style={{...}} /> |
| События | onClick, onChange, onFocus, onBlur | <Select onCha nge={...} /> |
| Доступность | aria-label, role, tabIndex | <Switch aria-label="..." /> |
| Композиция | children, контейнеры, слоты | <Card><Button /></Card> |
| Общие системные пропсы | id, disabled, loading, key | <Button id="btn1" loading /> |
Эти общие свойства формируют основу для работы со всеми компонентами Ant Design, обеспечивая единообразие и предсказуемое поведение интерфейса.