Назад к вопросам
Middle
3
Расскажи про кастомный select-компонент.
Компании, где спрашивали
Цифротех
Ответ от нейросети
sobes.tech AI
Кастомный select-компонент — это пользовательский элемент управления, который имитирует поведение стандартного HTML <select>, но позволяет гибко стилизовать и расширять функциональность.
Основные моменты:
- Отрисовка: обычно состоит из поля для отображения выбранного значения и выпадающего списка опций.
- Управление состоянием: хранит текущее выбранное значение и открытость списка.
- Обработка событий: клики по полю открывают/закрывают список, клики по опциям меняют выбранное значение.
- Доступность: важно обеспечить поддержку клавиатуры (навигация стрелками, Enter для выбора) и ARIA-атрибуты для скринридеров.
Пример простого кастомного select на React:
function CustomSelect({ options, value, onChange }) {
const [open, setOpen] = React.useState(false);
return (
<div tabIndex={0} onBlur={() => setOpen(false)}>
<div onClick={() => setOpen(!open)}>{value || 'Выберите'}</div>
{open && (
<ul>
{options.map(opt => (
<li key={opt.value} onClick={() => { onChange(opt.value); setOpen(false); }}>
{opt.label}
</li>
))}
</ul>
)}
</div>
);
}
Такой компонент можно расширять, добавляя поддержку поиска, мультивыбора, асинхронной загрузки опций и т.д.