Все компоненты
MotionPager
Листаемые страницы из данных: онбординг, карусели и панели вкладок.
ВебReact NativeВыбор и страницы
Попробуйте
Кратчайшее использование
Onboarding.jsx<MotionPager
items={slides}
index={page}
onIndexChange={setPage}
gap={16}
renderItem={(slide) => <Slide slide={slide} />}
/>;
Что он берёт на себя
- Страницы следуют за свайпами и перетаскиванием мышью, сопротивляются за краями и останавливаются с учётом скорости отпускания.
- Резкий взмах всегда перелистывает страницу, а один жест никогда не перелистывает больше одной.
- Горизонтальная прокрутка тачпадом тоже листает страницы, а её инерционный хвост игнорируется.
- Стрелки, Home и End работают, когда пейджер в фокусе, а вертикальная прокрутка продолжает работать.
- Все страницы, кроме активной, неактивны.
Для чего подходит
- Онбординг.
- Карусель фотографий.
- Листаемые панели вкладок в паре с
MotionHighlight.
Props
| Проп | Тип | По умолчанию | Описание |
|---|
items | readonly T[] | —обязательно | Ваш массив данных. |
|---|
index | number | | Показанная страница. Не задавайте её, чтобы пейджер управлял ею сам. |
|---|
defaultIndex | number | 0 | Начальная страница, когда index не управляется. |
|---|
onIndexChange | (index, item) => void | | Выполняется с индексом и элементом, как только свайп, клавиша или жест колеса завершились. |
|---|
getKey | (item) => string | number | item.id | Возвращает уникальный стабильный ключ элемента. По умолчанию — item.id, а для строк и чисел — сам элемент. |
|---|
renderItem | (item, { index, active }) => ReactNode | item.label | Рисует страницу; получает её индекс и то, активна ли она. |
|---|
gap | number | 0 | Расстояние между страницами в пикселях. |
|---|
itemClassName | string | | Класс для элемента каждого пункта; itemStyle задаёт его встроенный стиль. |
|---|
transition | Transition | spring | Кривая timing { duration, easing } или пружина { tempo: 'spring', spring }. При прерывании пружины сохраняют инерцию. |
|---|
Остальные props передаются отрендеренному элементу, поэтому className, style и обработчики событий работают как обычно.