Усі компоненти

MotionNumber · MotionText

Число, розряди якого крутяться як коліщатка, зокрема розряди, що з’являються й зникають.

ВебReact NativeЧисла й текст

Спробуйте

Підготовка прикладу…

Найкоротше використання

Total.jsx
<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

ПропТипТиповоОпис
valuenumber | bigint | string—обов’язковоЧисло чи числовий текст, відформатований вами.
mode'replace' | 'roll''replace'replace зсуває кожен змінений розряд на один крок; roll проходить через проміжні цифри.
direction'auto' | 'digit' | 'up' | 'down''auto'auto йде за зміною величини, щоб переноси крутилися в один бік; digit порівнює кожен розряд окремо.
staggernumber45Мілісекунди між зміненими розрядами, від одиниць назовні. Уся хвиля обмежена в часі.
format(value) => string | Intl.NumberFormatOptionsФункція, що повертає текст для показу, чи опції Intl.NumberFormat (разом з intl).
intlbooleanfalseВикористовувати вбудований Intl.NumberFormat. Типово вимкнено, щоб жодному середовищу виконання не був потрібен Intl.
localestring | string[]Локаль для intl.
prefixstringТекст перед числом.
suffixstringТекст після числа.
transitionTransitionspringКрива timing { duration, easing } чи пружина { tempo: 'spring', spring }. Після переривання пружини зберігають інерцію.
onMotionComplete(value) => voidВиконується зі значенням, коли розряди зупинилися.

MotionText

ПропТипТиповоОпис
childrenReactNodeТекст для показу.
aselement'span'Елемент для рендеру.
transitionTransitionspringКрива timing { duration, easing } чи пружина { tempo: 'spring', spring }. Після переривання пружини зберігають інерцію.
onMotionComplete(text) => voidВиконується, коли рух зупиняється.

Решта props передається відрендереному елементу, тож className, style і обробники подій працюють як завжди.

Веб і React Native

У вебі кожен розряд — невеликий стос гліфів, який відтворює Web Animations API, а текст лишається виділюваним. MotionText анімує будь-який текст: числовий прокручується розрядами, решта змінюється.

У React Native число лишається справжнім Text для розкладки, виділення й доступності, зокрема переносів і numberOfLines; гліфи рухаються на нативному драйвері.

Використовується в прикладах

Пошук

Почніть вводити, щоб шукати в документації.