В Ant Design (AntD) обработка событий тесно связана
с особенностями React, поскольку библиотека построена
поверх него. Компоненты AntD поддерживают все стандартные события React,
такие как onClick, onChange,
onFocus, onBlur, а также собственные
специфические события, характерные для конкретных компонентов.
Ключевой принцип заключается в том, что большинство компонентов AntD являются контролируемыми, что значит, что их состояние может управляться внешне через пропсы и внутренние обработчики событий.
Для текстовых полей и числовых инпутов основными событиями являются:
onChange — срабатывает при каждом изменении значения
компонента.onFocus и onBlur — позволяют отслеживать
момент фокуса и потери фокуса.onPressEnter — срабатывает при нажатии клавиши
Enter.Пример:
import { Input } from 'antd';
import { useState } from 'react';
function DemoInput() {
const [value, setValue] = useState('');
const handleChange = (e) => {
setValue(e.target.value);
};
const handlePressEnter = () => {
console.log('Enter pressed, value:', value);
};
return (
<Input
value={value}
onCha nge={handleChange}
onPressEn ter={handlePressEnter}
placeholder="Введите текст"
/>
);
}
Здесь важно различать событие React
onChange и нативное change. В AntD
onChange передает уже актуальное значение компонента,
упрощая управление состоянием.
Компоненты Select и AutoComplete имеют ряд
специфических событий:
onSelect(value, option) — вызывается при выборе
значения.onDeselect(value) — срабатывает при удалении выбранного
элемента (для множественного выбора).onSearch(value) — позволяет отслеживать ввод
пользователя для фильтрации опций.Пример для Select:
import { Sel ect } fr om 'antd';
const { Option } = Select;
function DemoSelect() {
const handleSelect = (value) => {
console.log('Selected:', value);
};
return (
<Sel ect onSel ect={handleSelect} style={{ width: 200 }}>
<Option value="apple">Apple</Option>
<Option value="orange">Orange</Option>
</Select>
);
}
Компонент Button поддерживает стандартные клики и
пользовательские события:
onClick — основной обработчик.onMouseEnter, onMouseLeave — для создания
интерактивных эффектов наведения.onFocus и onBlur — для управления стилями
при фокусе.Особенность AntD заключается в том, что Button также
может быть контролируемым через проп
loading, и событие onClick может
работать асинхронно:
import { Button } fr om 'antd';
import { useState } fr om 'react';
function DemoButton() {
const [loading, setLoading] = useState(false);
const handleClick = () => {
setLoading(true);
setTimeout(() => setLoading(false), 2000);
};
return <Button loading={loading} onCl ick={handleClick}>Загрузить</Button>;
}
Модальные окна в AntD предоставляют специальные события:
onOk — вызывается при нажатии кнопки
подтверждения.onCancel — при закрытии модального окна или нажатии
кнопки отмены.Пример:
import { Modal, Button } fr om 'antd';
import { useState } from 'react';
function DemoModal() {
const [visible, setVisible] = useState(false);
return (
<>
<Button onCl ick={() => setVisible(true)}>Открыть</Button>
<Modal
visible={visible}
onOk={() => setVisible(false)}
onCan cel={() => setVisible(false)}
>
Содержимое модального окна
</Modal>
</>
);
}
Компоненты уведомлений используют функции API, а не пропсы, для обработки событий:
notification.open({ onClick }) — срабатывает при клике
на уведомление.message.success('Успешно', 3, onClose) —
onClose вызывается после автоматического закрытия.Компонент Table предоставляет множество событий для
работы с данными:
onChange(pagination, filters, sorter, extra) — основной
обработчик для сортировки, фильтрации и пагинации.onRow — функция, возвращающая объект событий для
строки:<Table
columns={columns}
dataSource={data}
onCha nge={(pagination, filters, sorter) => {
console.log('Table changed:', pagination, filters, sorter);
}}
on Row={(record) => ({
onClick: () => console.log('Row clicked:', record),
onDoubleClick: () => console.log('Row double-clicked:', record)
})}
/>
Эта модель позволяет создавать интерактивные таблицы с детализированными реакциями на пользовательские действия.
loading или visible.Table, List) возвращают функции для каждой
строки или элемента, что позволяет детально отслеживать действия
пользователя.onChange для
Select возвращает значение и объект опции, а для
Input — событие события.Компонент Form объединяет обработку событий с
валидацией:
onFinish(values) — вызывается после успешной
валидации.onFinishFailed(errorInfo) — при ошибках валидации.onValuesChange(changedValues, allValues) — срабатывает
при любом изменении поля формы.Пример:
import { Form, Input, Button } from 'antd';
function DemoForm() {
const [form] = Form.useForm();
return (
<Form
form={form}
onFin ish={(values) => console.log('Submitted:', values)}
onValuesCha nge={(changed, all) => console.log('Changed:', changed, 'All:', all)}
>
<Form.Item name="username" rules={[{ required: true, message: 'Введите имя пользователя' }]}>
<Input placeholder="Имя пользователя" />
</Form.Item>
<Form.Item>
<Button htmlType="submit">Отправить</Button>
</Form.Item>
</Form>
);
}
Использование onValuesChange позволяет отслеживать все
изменения полей в режиме реального времени, что идеально для
динамических форм.
Эта структура обработки событий в Ant Design обеспечивает гибкость управления пользовательскими взаимодействиями и интеграцию с функциональностью React. Контролируемые компоненты, асинхронные действия и специфические события для каждого типа элементов создают мощный инструмент для построения интерактивных интерфейсов.