Компонент TimePicker из библиотеки MUI предназначен для выбора времени пользователем. Он является частью набора компонентов @mui/x-date-pickers, которые обеспечивают удобную работу с датой и временем в приложениях на React. Основные возможности TimePicker включают выбор часов и минут, поддержку форматов 12/24 часа, работу с локализацией и кастомизацию отображения.
Для использования TimePicker необходимо импортировать его из пакета:
import { TimePicker } from '@mui/x-date-pickers/TimePicker';
import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
Использование LocalizationProvider обязательно для корректной работы TimePicker, так как он управляет форматированием времени и локализацией. В качестве адаптера можно использовать Day.js, date-fns, Moment.js или Luxon.
<LocalizationProvider dateAdapter={AdapterDayjs}>
<TimePicker
label="Выберите время"
value={timeValue}
onCha nge={(newValue) => setTimeValue(newValue)}
/>
</LocalizationProvider>
'HH:mm' или 'hh:mm A'.true) или 24-часовой (false).5 для кратных пяти минут).<TimePicker
label="Выберите время"
value={timeValue}
onCha nge={(newValue) => setTimeValue(newValue)}
ampm={false}
minutesStep={15}
minTime={dayjs('08:00', 'HH:mm')}
maxTime={dayjs('20:00', 'HH:mm')}
/>
Для корректного отображения времени важно использовать LocalizationProvider и соответствующий адаптер даты. В MUI TimePicker поддерживает локали через библиотеку адаптера, например Day.js:
import 'dayjs/locale/ru';
<LocalizationProvider dateAdapter={AdapterDayjs} adapterLocale="ru">
<TimePicker
label="Время"
value={timeValue}
onCha nge={(newValue) => setTimeValue(newValue)}
ampm={false}
/>
</LocalizationProvider>
Формат времени контролируется свойством format, которое учитывает 12- и 24-часовой режим. Для пользовательского отображения можно комбинировать символы формата:
HH – часы в 24-часовом форматеhh – часы в 12-часовом форматеmm – минутыA – AM/PMTimePicker интегрируется с состоянием React через useState:
const [timeValue, setTimeValue] = React.useState(dayjs('12:00', 'HH:mm'));
Для валидации можно использовать свойства minTime и maxTime или собственные функции проверки:
const handleChange = (newValue) => {
if (newValue.isBefore(dayjs('08:00')) || newValue.isAfter(dayjs('20:00'))) {
console.log('Выбрано недопустимое время');
return;
}
setTimeValue(newValue);
};
TimePicker можно интегрировать с TextField для полной кастомизации интерфейса:
import TextField from '@mui/material/TextField';
<TimePicker
label="Выберите время"
value={timeValue}
onCha nge={setTimeValue}
renderInput={(params) => <TextField {...params} helperText="Выберите удобное время" />}
/>
С помощью renderInput можно добавлять подсказки, иконки и другие элементы интерфейса, сохраняя функциональность выбора времени.
MUI автоматически адаптирует интерфейс TimePicker под платформу:
Для принудительного выбора версии можно использовать свойства:
desktopModeMediaQuery – изменяет поведение в
зависимости от медиазапроса.DialogProps и PopperProps – позволяют
тонко настраивать диалог и всплывающую подсказку.TimePicker легко интегрируется с библиотеками форм, такими как Formik или React Hook Form:
<Controller
name="appointmentTime"
control={control}
render={({ field }) => (
<TimePicker
{...field}
label="Время встречи"
renderInput={(params) => <TextField {...params} />}
/>
)}
/>
Это позволяет автоматически управлять валидацией, состоянием и ошибками формы.
@mui/x-date-pickers, чтобы уменьшить вес бандла.TimePicker MUI сочетает гибкость, локализацию и удобство пользовательского интерфейса, обеспечивая надежный инструмент для выбора времени в современных веб-приложениях на React.