Компонент TimePicker из библиотеки Ant Design предназначен для выбора времени в формате часов, минут и при необходимости секунд. Он строится поверх стандартного input и предоставляет удобный интерфейс с выпадающим списком для быстрого выбора времени.
Подключение и базовое использование выглядит следующим образом:
import { TimePicker } from 'antd';
import 'antd/dist/reset.css'; // Сброс стилей для корректного отображения
const App = () => (
<TimePicker defaultValue={moment('12:08:23', 'HH:mm:ss')} format={'HH:mm:ss'} />
);
Ключевые моменты:
defaultValue задаёт начальное время.format определяет формат отображения (например,
HH:mm или HH:mm:ss).moment или с
dayjs (начиная с последних версий Ant Design рекомендуется
dayjs).TimePicker поддерживает различные форматы времени:
<TimePicker format="HH:mm" /> // Только часы и минуты
<TimePicker format="HH:mm:ss" /> // Часы, минуты и секунды
<TimePicker format="hh:mm A" /> // 12-часовой формат с AM/PM
Примечание: Использование 12-часового формата
требует включения опции use12Hours={true}.
<TimePicker use12Hours format="h:mm A" />
Для управления временем в React часто используют состояние:
import { useState } from 'react';
import { TimePicker } from 'antd';
import dayjs from 'dayjs';
const App = () => {
const [time, setTime] = useState(dayjs('12:00', 'HH:mm'));
const handleChange = (value) => {
setTime(value);
console.log('Выбранное время:', value.format('HH:mm'));
};
return <TimePicker value={time} onCha nge={handleChange} format="HH:mm" />;
};
value синхронизирует текущее время с состоянием
компонента.onChange срабатывает при каждом изменении
значения.Можно ограничить диапазон выбора времени с помощью
disabledHours, disabledMinutes и
disabledSeconds:
<TimePicker
disabledHours={() => [0, 1, 2, 3]} // Запрещает выбор часов с 0 до 3
disabledMinutes={() => [30, 31, 32]} // Запрещает выбор минут 30–32
disabledSeconds={() => [0, 15, 30, 45]} // Запрещает выбор этих секунд
/>
Эти функции возвращают массив запрещённых значений, что позволяет тонко контролировать интерфейс выбора времени.
Для ускорения выбора времени можно задать шаг изменения:
<TimePicker
minuteStep={15} // Позволяет выбирать только каждые 15 минут
secondStep={10} // Позволяет выбирать секунды с шагом 10
/>
hourStep — шаг изменения часов.minuteStep — шаг изменения минут.secondStep — шаг изменения секунд.TimePicker может отображаться в двух основных режимах:
open={true}) для
отображения без клика:<TimePicker open defaultValue={dayjs('12:00', 'HH:mm')} />
Ant Design поддерживает локализацию формата времени:
import locale from 'antd/es/locale/ru_RU';
<TimePicker locale={locale} format="HH:mm" />
Эффекты локализации:
TimePicker поддерживает различные визуальные состояния:
disabled — делает компонент недоступным.allowClear={false} — запрещает очищение выбранного
времени.placeholder="Выберите время" — текст по умолчанию, если
значение пусто.<TimePicker disabled placeholder="Недоступно" />
<TimePicker allowClear={false} />
В форме Ant Design компонент работает через
Form.Item:
import { Form, TimePicker, Button } from 'antd';
import dayjs from 'dayjs';
<Form
onFin ish={(values) => console.log(values)}
>
<Form.Item
name="appointment"
label="Время встречи"
rules={[{ required: true, message: 'Пожалуйста, выберите время' }]}
>
<TimePicker defaultValue={dayjs('09:00', 'HH:mm')} format="HH:mm" />
</Form.Item>
<Form.Item>
<Button type="primary" htmlType="submit">Отправить</Button>
</Form.Item>
</Form>
rules.dayjs
объект.addon) для кастомных действий:<TimePicker
addon={() => <Button size="small">Сбросить</Button>}
/>
import { TimePicker } from 'antd';
const { RangePicker } = TimePicker;
<RangePicker format="HH:mm" />
События открытия/закрытия:
onOpenChange(open) — срабатывает при открытии или
закрытии выпадающего списка.onFocus / onBlur — стандартные события
input.use12Hours для интерфейсов, где привычен
12-часовой формат.minuteStep, secondStep)
для упрощения выбора стандартных значений.disabledHours/Minutes/Seconds для предотвращения ошибок
ввода.TimePicker Ant Design сочетает наглядность, гибкость и простоту интеграции с формами, что делает его ключевым инструментом для интерфейсов, где требуется выбор времени.