Sobes.tech
Назад к вопросам
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>
  );
}

Такой компонент можно расширять, добавляя поддержку поиска, мультивыбора, асинхронной загрузки опций и т.д.