MotionNumber · MotionText
Liczba, której cyfry obracają się jak kółka, łącznie z cyframi, które się pojawiają lub znikają.
SiećReact NativeLiczby i tekst
Wypróbuj
Przygotowywanie przykładu…
Najkrótsze użycie
<MotionNumber value={count} />
<MotionNumber value={total} mode="roll" intl locale="en-US"
format={{ style: 'currency', currency: 'USD' }} />
<MotionText>{status}</MotionText>Co robi za ciebie
- Przeniesienia:
999 → 1,000przewija każdą zmienioną cyfrę w tę samą stronę, jak licznik kilometrów. - Cyfry, które się pojawiają lub znikają, wjeżdżają lub wyjeżdżają we własnej kolumnie zamiast wyskakiwać.
- Separatory, znaki i symbole walut pojawiają się i znikają razem z cyfrą, do której należą.
- Pozostałe cyfry przesuwają się na nowe pozycje w trakcie przewijania, więc liczba nigdy się nie rozpada.
- Nowa wartość w środku ruchu kontynuuje dokładnie od tego, co na ekranie.
- Formatowanie nigdy nie wymaga
Intl: przekaż tekst lub funkcjęformatalbo włączintl.
Do czego służy
- Suma koszyka zmieniająca się przy dodawaniu produktów.
- Licznik lub wynik na żywo.
- Wskaźnik na panelu odświeżany co kilka sekund.
Props
MotionNumber
| Prop | Typ | Domyślnie | Opis |
|---|---|---|---|
value | number | bigint | string | —wymagane | Liczba lub sformatowany przez ciebie tekst liczbowy. |
mode | 'replace' | 'roll' | 'replace' | replace przesuwa każdą zmienioną cyfrę o jeden krok; roll przechodzi przez cyfry pośrednie. |
direction | 'auto' | 'digit' | 'up' | 'down' | 'auto' | auto podąża za zmianą wielkości, więc przeniesienia przewijają się w jedną stronę; digit porównuje każdą cyfrę osobno. |
stagger | number | 45 | Milisekundy między zmienionymi cyframi, od jedności na zewnątrz. Cała fala jest ograniczona w czasie. |
format | (value) => string | Intl.NumberFormatOptions | Funkcja zwracająca tekst do pokazania lub opcje Intl.NumberFormat (z intl). | |
intl | boolean | false | Użyj wbudowanego Intl.NumberFormat. Domyślnie wyłączone, więc żadne środowisko nie potrzebuje Intl. |
locale | string | string[] | Locale dla intl. | |
prefix | string | Tekst przed liczbą. | |
suffix | string | Tekst po liczbie. | |
transition | Transition | spring | Krzywa timing { duration, easing } lub sprężyna { tempo: 'spring', spring }. Sprężyny zachowują pęd po przerwaniu. |
onMotionComplete | (value) => void | Uruchamia się z wartością, gdy cyfry się ułożą. |
MotionText
| Prop | Typ | Domyślnie | Opis |
|---|---|---|---|
children | ReactNode | Tekst do pokazania. | |
as | element | 'span' | Element do wyrenderowania. |
transition | Transition | spring | Krzywa timing { duration, easing } lub sprężyna { tempo: 'spring', spring }. Sprężyny zachowują pęd po przerwaniu. |
onMotionComplete | (text) => void | Uruchamia się, gdy ruch się ułoży. |
Pozostałe props trafiają do renderowanego elementu, więc className, style i obsługa zdarzeń działają jak zwykle.
Sieć i React Native
W sieci każda cyfra to mały stos glifów odtwarzany przez Web Animations API, a tekst pozostaje do zaznaczenia. MotionText animuje dowolny tekst: tekst liczbowy przewija się cyfra po cyfrze, inny się zamienia.
W React Native liczba pozostaje prawdziwym Text dla układu, zaznaczania i dostępności, łącznie z zawijaniem i numberOfLines; glify poruszają się na sterowniku natywnym.
Użyty w tych przykładach
- Podsumowanie zamówieniaIlości, sumy pozycji i suma całkowita przewijają się, gdy zmienia się koszyk; komunikat o kuponie wchodzi i odchodzi; płatność wymaga świadomego przytrzymania.
MotionListMotionNumberMotionPresenceMotionHold - Skrzynka odbiorczaKarty filtrów z licznikami na żywo, wiersze do odrzucenia przesunięciem i lista, która zamyka lukę.
MotionHighlightMotionListMotionSwipeMotionNumber