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

MotionPager

Листаемые страницы из данных: онбординг, карусели и панели вкладок.

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

Попробуйте

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

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

Onboarding.jsx
<MotionPager
  items={slides}
  index={page}
  onIndexChange={setPage}
  gap={16}
  renderItem={(slide) => <Slide slide={slide} />}
/>;

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

  • Страницы следуют за свайпами и перетаскиванием мышью, сопротивляются за краями и останавливаются с учётом скорости отпускания.
  • Резкий взмах всегда перелистывает страницу, а один жест никогда не перелистывает больше одной.
  • Горизонтальная прокрутка тачпадом тоже листает страницы, а её инерционный хвост игнорируется.
  • Стрелки, Home и End работают, когда пейджер в фокусе, а вертикальная прокрутка продолжает работать.
  • Все страницы, кроме активной, неактивны.

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

  • Онбординг.
  • Карусель фотографий.
  • Листаемые панели вкладок в паре с MotionHighlight.

Props

ПропТипПо умолчаниюОписание
itemsreadonly T[]—обязательноВаш массив данных.
indexnumberПоказанная страница. Не задавайте её, чтобы пейджер управлял ею сам.
defaultIndexnumber0Начальная страница, когда index не управляется.
onIndexChange(index, item) => voidВыполняется с индексом и элементом, как только свайп, клавиша или жест колеса завершились.
getKey(item) => string | numberitem.idВозвращает уникальный стабильный ключ элемента. По умолчанию — item.id, а для строк и чисел — сам элемент.
renderItem(item, { index, active }) => ReactNodeitem.labelРисует страницу; получает её индекс и то, активна ли она.
gapnumber0Расстояние между страницами в пикселях.
itemClassNamestringКласс для элемента каждого пункта; itemStyle задаёт его встроенный стиль.
transitionTransitionspringКривая timing { duration, easing } или пружина { tempo: 'spring', spring }. При прерывании пружины сохраняют инерцию.

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

Веб и React Native

index может быть управляемым (onIndexChange(index, item) сообщает о каждой остановке) или оставлен пейджеру через defaultIndex.

Тот же компонент и те же props работают в React Native.

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

Поиск

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