Wszystkie komponenty
MotionPager
Strony z danych przewijane gestem: onboarding, karuzele i panele kart.
SiećReact NativeWybór i strony
Wypróbuj
Przygotowywanie przykładu…
Najkrótsze użycie
Onboarding.jsx<MotionPager
items={slides}
index={page}
onIndexChange={setPage}
gap={16}
renderItem={(slide) => <Slide slide={slide} />}
/>;
Co robi za ciebie
- Strony podążają za przesunięciami i przeciąganiem myszą, stawiają opór za krańcami i układają się z prędkością twojego puszczenia.
- Szybkie machnięcie zawsze zmienia stronę, a jeden gest nigdy nie zmienia więcej niż jednej.
- Poziome przewijanie touchpadem też zmienia strony, a jego bezwładny ogon jest ignorowany.
- Strzałki, Home i End działają, gdy pager ma fokus, a przewijanie w pionie działa dalej.
- Strony inne niż aktywna są nieaktywne.
Do czego służy
- Proces onboardingu.
- Karuzela zdjęć.
- Panele kart przewijane gestem w parze z
MotionHighlight.
Props
| Prop | Typ | Domyślnie | Opis |
|---|
items | readonly T[] | —wymagane | Twoja tablica danych. |
|---|
index | number | | Pokazywana strona. Pomiń ją, by pager zarządzał własną. |
|---|
defaultIndex | number | 0 | Strona początkowa, gdy index nie jest kontrolowany. |
|---|
onIndexChange | (index, item) => void | | Uruchamia się z indeksem i elementem, gdy tylko przesunięcie, klawisz lub gest kółka się ułoży. |
|---|
getKey | (item) => string | number | item.id | Zwraca unikalny, stabilny klucz elementu. Domyślnie item.id, a dla ciągów i liczb sam element. |
|---|
renderItem | (item, { index, active }) => ReactNode | item.label | Rysuje stronę; dostaje jej indeks i informację, czy jest aktywna. |
|---|
gap | number | 0 | Odstęp między stronami w pikselach. |
|---|
itemClassName | string | | Klasa dla elementu każdej pozycji; itemStyle ustawia jego styl inline. |
|---|
transition | Transition | spring | Krzywa timing { duration, easing } lub sprężyna { tempo: 'spring', spring }. Sprężyny zachowują pęd po przerwaniu. |
|---|
Pozostałe props trafiają do renderowanego elementu, więc className, style i obsługa zdarzeń działają jak zwykle.