Все компоненты

MotionHighlight

Вкладки, сегментированные переключатели или навигация из данных — с одной подсветкой, которая перемещается к выбранному.

ВебReact NativeВыбор и страницы

Попробуйте

Подготовка примера…

Кратчайшее использование

Tabs.jsx
<MotionHighlight
  items={['Overview', 'Activity', 'Settings']}
  value={tab}
  onValueChange={setTab}
  hover
/>;

Что он берёт на себя

  • Одна подсветка перемещается и меняет размер между элементами; стилизуйте её через highlightClassName.
  • Элементы берутся из items, ключи — из getKey, подписи — из renderItem.
  • hover заставляет её следовать за указателем и возвращаться к выбранному.
  • Элементы могут переноситься на несколько строк, и подсветка следует за ними.
  • Загрузка шрифтов и изменения раскладки перемеряются автоматически.

Для чего подходит

  • Вкладки страницы.
  • Панель фильтров.
  • Сегментированный переключатель в форме настроек.

Props

ПропТипПо умолчаниюОписание
itemsreadonly T[]—обязательноВаш массив данных.
valuekey | null—обязательноКлюч подсвеченного элемента; null скрывает подсветку.
onValueChange(key, item) => voidВыполняется с ключом и элементом при нажатии на элемент.
getKey(item) => string | numberitem.idВозвращает уникальный стабильный ключ элемента. По умолчанию — item.id, а для строк и чисел — сам элемент.
renderItem(item, { selected, index }) => ReactNodeitem.labelРисует элемент; получает, выбран ли он.
hoverbooleanfalseСледовать за указателем над элементами и возвращаться к value, когда он уходит (веб).
itemAselement'button'Элемент для каждого пункта.
itemClassNamestringКласс для элемента каждого пункта; itemStyle задаёт его встроенный стиль.
highlightClassNamestringКласс для подсветки; highlightStyle задаёт её встроенный стиль.
transitionTransitionspringКривая timing { duration, easing } или пружина { tempo: 'spring', spring }. При прерывании пружины сохраняют инерцию.

Остальные props передаются отрендеренному элементу, поэтому className, style и обработчики событий работают как обычно.

Веб и React Native

Каждый элемент по умолчанию рендерится как button (itemAs это меняет); нажатие вызывает onValueChange(key, item).

В React Native элементы — это Pressable; позиция работает на нативном драйвере, а размер — на вложенном view, которым управляет JavaScript.

Используется в примерах

Поиск

Начните вводить, чтобы искать в документации.