MotionNumber · MotionText
Um número cujas casas rolam como rodas, inclusive casas que aparecem ou somem.
WebReact NativeNúmeros e texto
Experimente
Preparando o exemplo…
Uso mais curto
<MotionNumber value={count} />
<MotionNumber value={total} mode="roll" intl locale="en-US"
format={{ style: 'currency', currency: 'USD' }} />
<MotionText>{status}</MotionText>O que ele resolve para você
- Vai-um:
999 → 1,000faz cada casa que muda rolar no mesmo sentido, como um odômetro. - Casas que aparecem ou somem entram e saem rolando na própria coluna, em vez de surgir de repente.
- Separadores, sinais e símbolos de moeda aparecem e somem com a casa a que pertencem.
- As casas que ficam deslizam para a nova posição enquanto rolam, então o número nunca se parte.
- Um valor novo no meio do movimento continua exatamente do que está na tela.
- A formatação nunca exige
Intl: passe texto ou uma funçãoformat, ou ative comintl.
Use para
- O total de um carrinho que muda conforme os itens são adicionados.
- Um contador ou placar ao vivo.
- Um número de painel que atualiza a cada poucos segundos.
Props
MotionNumber
| Prop | Tipo | Padrão | Descrição |
|---|---|---|---|
value | number | bigint | string | —obrigatória | O número, ou um texto numérico já formatado por quem chama. |
mode | 'replace' | 'roll' | 'replace' | replace move cada casa alterada um passo; roll passa pelos dígitos intermediários. |
direction | 'auto' | 'digit' | 'up' | 'down' | 'auto' | auto segue a mudança de grandeza, para o vai-um rolar em um sentido; digit compara cada casa por conta própria. |
stagger | number | 45 | Milissegundos entre as casas alteradas, das unidades para fora. A onda inteira tem limite. |
format | (value) => string | Intl.NumberFormatOptions | Uma função que retorna o texto a mostrar, ou opções de Intl.NumberFormat (com intl). | |
intl | boolean | false | Usa o Intl.NumberFormat embutido. Desligado por padrão para que nenhum ambiente precise de Intl. |
locale | string | string[] | Locale para intl. | |
prefix | string | Texto antes do número. | |
suffix | string | Texto depois do número. | |
transition | Transition | spring | Uma curva de tempo { duration, easing } ou uma mola { tempo: 'spring', spring }. As molas mantêm o embalo quando interrompidas. |
onMotionComplete | (value) => void | Roda com o valor quando as casas se acomodam. |
MotionText
| Prop | Tipo | Padrão | Descrição |
|---|---|---|---|
children | ReactNode | O texto a mostrar. | |
as | element | 'span' | O elemento a renderizar. |
transition | Transition | spring | Uma curva de tempo { duration, easing } ou uma mola { tempo: 'spring', spring }. As molas mantêm o embalo quando interrompidas. |
onMotionComplete | (text) => void | Roda quando o movimento se acomoda. |
As outras props vão para o elemento renderizado, então className, style e handlers de eventos funcionam normalmente.
Web e React Native
Na web, cada casa é uma pequena pilha de glifos reproduzida pela Web Animations API, e o texto continua selecionável. MotionText anima qualquer texto: texto numérico rola por casa, os demais trocam.
No React Native, o número continua sendo um Text de verdade para layout, seleção e acessibilidade, incluindo quebra de linha e numberOfLines; os glifos se movem com o driver nativo.
Usado nestes exemplos
- Resumo do pedidoQuantidades, subtotais e o total rolam quando o carrinho muda; o aviso do cupom entra e sai; pagar exige segurar de propósito.
MotionListMotionNumberMotionPresenceMotionHold - Caixa de entradaAbas de filtro com contagens ao vivo, linhas que você desliza para fora e uma lista que fecha o espaço.
MotionHighlightMotionListMotionSwipeMotionNumber