Tous les composants

MotionNumber · MotionText

Un nombre dont les chiffres tournent comme des roues, y compris ceux qui apparaissent ou disparaissent.

WebReact NativeNombres et texte

Essayer

Préparation de l’exemple…

Usage minimal

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

Ce qu’il gère pour vous

  • Retenues : 999 → 1,000 fait tourner chaque chiffre modifié dans le même sens, comme un compteur kilométrique.
  • Les chiffres qui apparaissent ou disparaissent entrent et sortent en roulant dans leur propre colonne au lieu de surgir.
  • Séparateurs, signes et symboles monétaires apparaissent et disparaissent en fondu avec le chiffre auquel ils appartiennent.
  • Les chiffres restants glissent vers leur nouvelle position pendant qu’ils défilent : le nombre ne se coupe jamais.
  • Une nouvelle valeur en plein mouvement repart exactement de ce qui est à l’écran.
  • Le formatage n’exige jamais Intl : passez du texte ou une fonction format, ou activez-le avec intl.

À utiliser pour

  • Le total d’un panier qui change à chaque ajout.
  • Un compteur ou un score en direct.
  • Un chiffre de tableau de bord rafraîchi toutes les quelques secondes.

Props

MotionNumber

PropTypeDéfautDescription
valuenumber | bigint | string—obligatoireLe nombre, ou un texte numérique déjà formaté par l’appelant.
mode'replace' | 'roll''replace'replace avance chaque chiffre modifié d’un cran ; roll passe par les chiffres intermédiaires.
direction'auto' | 'digit' | 'up' | 'down''auto'auto suit la variation d’ordre de grandeur pour que les retenues tournent dans un sens ; digit compare chaque chiffre isolément.
staggernumber45Millisecondes entre les chiffres modifiés, des unités vers l’extérieur. L’ondulation totale est bornée.
format(value) => string | Intl.NumberFormatOptionsUne fonction qui renvoie le texte à afficher, ou des options Intl.NumberFormat (avec intl).
intlbooleanfalseUtilise l’Intl.NumberFormat intégré. Désactivé par défaut pour qu’aucun environnement n’ait besoin d’Intl.
localestring | string[]Paramètre régional pour intl.
prefixstringTexte avant le nombre.
suffixstringTexte après le nombre.
transitionTransitionspringUne courbe de temps { duration, easing } ou un ressort { tempo: 'spring', spring }. Les ressorts gardent leur élan quand ils sont interrompus.
onMotionComplete(value) => voidS’exécute avec la valeur une fois les chiffres posés.

MotionText

PropTypeDéfautDescription
childrenReactNodeLe texte à afficher.
aselement'span'L’élément à rendre.
transitionTransitionspringUne courbe de temps { duration, easing } ou un ressort { tempo: 'spring', spring }. Les ressorts gardent leur élan quand ils sont interrompus.
onMotionComplete(text) => voidS’exécute quand le mouvement se pose.

Les autres props vont à l’élément rendu : className, style et les gestionnaires d’événements fonctionnent comme d’habitude.

Web et React Native

Sur le web, chaque chiffre est une petite pile de glyphes jouée par la Web Animations API, et le texte reste sélectionnable. MotionText anime n’importe quel texte : le texte numérique défile chiffre par chiffre, le reste s’échange.

Sur React Native, le nombre reste un vrai Text pour la mise en page, la sélection et l’accessibilité, y compris le retour à la ligne et numberOfLines ; les glyphes bougent avec le driver natif.

Utilisé dans ces exemples

Rechercher

Tapez pour rechercher dans la documentation.