MotionNumber · MotionText
Число, розряди якого крутяться як коліщатка, зокрема розряди, що з’являються й зникають.
ВебReact NativeЧисла й текст
Спробуйте
Підготовка прикладу…
Найкоротше використання
<MotionNumber value={count} />
<MotionNumber value={total} mode="roll" intl locale="en-US"
format={{ style: 'currency', currency: 'USD' }} />
<MotionText>{status}</MotionText>Що він бере на себе
- Переноси:
999 → 1,000прокручує кожен змінений розряд в один бік, як одометр. - Розряди, що з’являються чи зникають, в’їжджають і виїжджають у своїй колонці, а не виникають стрибком.
- Роздільники, знаки й символи валют з’являються й зникають разом зі своїм розрядом.
- Решта розрядів зсувається на нові місця, поки прокручується, тож число ніколи не розвалюється.
- Нове значення посеред руху продовжується саме з того, що на екрані.
- Форматування ніколи не потребує
Intl: передайте текст чи функціюformatабо ввімкнітьintl.
Для чого підходить
- Сума кошика, що змінюється, коли додаються товари.
- Живий лічильник чи рахунок.
- Показник на панелі, що оновлюється кожні кілька секунд.
Props
MotionNumber
| Проп | Тип | Типово | Опис |
|---|---|---|---|
value | number | bigint | string | —обов’язково | Число чи числовий текст, відформатований вами. |
mode | 'replace' | 'roll' | 'replace' | replace зсуває кожен змінений розряд на один крок; roll проходить через проміжні цифри. |
direction | 'auto' | 'digit' | 'up' | 'down' | 'auto' | auto йде за зміною величини, щоб переноси крутилися в один бік; digit порівнює кожен розряд окремо. |
stagger | number | 45 | Мілісекунди між зміненими розрядами, від одиниць назовні. Уся хвиля обмежена в часі. |
format | (value) => string | Intl.NumberFormatOptions | Функція, що повертає текст для показу, чи опції Intl.NumberFormat (разом з intl). | |
intl | boolean | false | Використовувати вбудований Intl.NumberFormat. Типово вимкнено, щоб жодному середовищу виконання не був потрібен Intl. |
locale | string | string[] | Локаль для intl. | |
prefix | string | Текст перед числом. | |
suffix | string | Текст після числа. | |
transition | Transition | spring | Крива timing { duration, easing } чи пружина { tempo: 'spring', spring }. Після переривання пружини зберігають інерцію. |
onMotionComplete | (value) => void | Виконується зі значенням, коли розряди зупинилися. |
MotionText
| Проп | Тип | Типово | Опис |
|---|---|---|---|
children | ReactNode | Текст для показу. | |
as | element | 'span' | Елемент для рендеру. |
transition | Transition | spring | Крива timing { duration, easing } чи пружина { tempo: 'spring', spring }. Після переривання пружини зберігають інерцію. |
onMotionComplete | (text) => void | Виконується, коли рух зупиняється. |
Решта props передається відрендереному елементу, тож className, style і обробники подій працюють як завжди.
Веб і React Native
У вебі кожен розряд — невеликий стос гліфів, який відтворює Web Animations API, а текст лишається виділюваним. MotionText анімує будь-який текст: числовий прокручується розрядами, решта змінюється.
У React Native число лишається справжнім Text для розкладки, виділення й доступності, зокрема переносів і numberOfLines; гліфи рухаються на нативному драйвері.
Використовується в прикладах
- Підсумок замовленняКількості, суми рядків і підсумок прокручуються, коли змінюється кошик; повідомлення про купон з’являється й іде; оплата потребує свідомого утримання.
MotionListMotionNumberMotionPresenceMotionHold - ВхідніВкладки-фільтри з живими лічильниками, рядки, які можна змахнути, і список, що закриває проміжок.
MotionHighlightMotionListMotionSwipeMotionNumber