Todos los componentes

MotionNumber · MotionText

Un número cuyas cifras ruedan como ruedas, incluidas las que aparecen o desaparecen.

WebReact NativeNúmeros y texto

Pruébalo

Preparando el ejemplo…

Uso mínimo

Total.jsx
<MotionNumber value={count} />
<MotionNumber value={total} mode="roll" intl locale="en-US"
  format={{ style: 'currency', currency: 'USD' }} />
<MotionText>{status}</MotionText>

Lo que resuelve por ti

  • Acarreos: 999 → 1,000 hace rodar en el mismo sentido cada cifra que cambia, como un cuentakilómetros.
  • Las cifras que aparecen o desaparecen entran y salen rodando en su propia columna en lugar de saltar.
  • Los separadores, los signos y los símbolos de moneda aparecen y desaparecen con la cifra a la que pertenecen.
  • Las cifras que se quedan se desplazan a su nueva posición mientras ruedan, así que el número nunca se parte.
  • Un valor nuevo a mitad de movimiento continúa exactamente desde lo que se ve en pantalla.
  • El formato nunca requiere Intl: pasa texto o una función format, o actívalo con intl.

Úsalo para

  • El total de un carrito que cambia al añadir artículos.
  • Un contador o marcador en vivo.
  • Una cifra de panel que se actualiza cada pocos segundos.

Props

MotionNumber

PropTipoPor defectoDescripción
valuenumber | bigint | string—obligatoriaEl número, o texto numérico ya formateado por quien llama.
mode'replace' | 'roll''replace'replace mueve un paso cada cifra que cambia; roll pasa por los dígitos intermedios.
direction'auto' | 'digit' | 'up' | 'down''auto'auto sigue el cambio de magnitud para que los acarreos rueden en un sentido; digit compara cada cifra por separado.
staggernumber45Milisegundos entre cifras que cambian, desde las unidades hacia fuera. La onda completa está acotada.
format(value) => string | Intl.NumberFormatOptionsUna función que devuelve el texto que se muestra, u opciones de Intl.NumberFormat (con intl).
intlbooleanfalseUsa el Intl.NumberFormat integrado. Desactivado por defecto para que ningún entorno necesite Intl.
localestring | string[]Configuración regional para intl.
prefixstringTexto antes del número.
suffixstringTexto después del número.
transitionTransitionspringUna curva de tiempo { duration, easing } o un resorte { tempo: 'spring', spring }. Los resortes conservan su impulso cuando se interrumpen.
onMotionComplete(value) => voidSe ejecuta con el valor cuando las cifras se han asentado.

MotionText

PropTipoPor defectoDescripción
childrenReactNodeEl texto que se muestra.
aselement'span'El elemento que se renderiza.
transitionTransitionspringUna curva de tiempo { duration, easing } o un resorte { tempo: 'spring', spring }. Los resortes conservan su impulso cuando se interrumpen.
onMotionComplete(text) => voidSe ejecuta cuando el movimiento se asienta.

Las demás props van al elemento renderizado, así que className, style y los manejadores de eventos funcionan como siempre.

Web y React Native

En la web, cada cifra es una pequeña pila de glifos reproducida por la Web Animations API, y el texto sigue siendo seleccionable. MotionText anima cualquier texto: el texto numérico rueda por cifras y el resto se intercambia.

En React Native, el número sigue siendo un Text real para el layout, la selección y la accesibilidad, incluidos el ajuste de línea y numberOfLines; los glifos se mueven con el driver nativo.

Se usa en estos ejemplos

Buscar

Escribe para buscar en la documentación.