L’animation pour React DOM · API Animated de React Native

Écrivez l’animation une fois. Elle est fluide, et ne casse jamais.

Animated apporte l’Animated de React Native sur le web. Une valeur anime autant d’éléments que vous voulez sans rendu React à chaque image, les mouvements pris en charge sont joués par le navigateur lui-même, et chaque interruption repart de ce qui est à l’écran.

Installer
npm install @kkwaenggwari/animated

Une valeur d’horloge anime l’onde des 64 formes. Passez le pointeur sur la scène.

Mesuré sur cette version

Mesuré avec le build 1.0.0 dans Chrome headless sur un PC de bureau. Les chiffres varient selon l’appareil. Méthode de mesure

  • 0.00msJavaScript par image pendant que 400 éléments bougent

    Les mouvements finis de transform et opacity sur les éléments Animated sont joués par le navigateur. Les callbacks d’image de la page ne font aucun travail.

  • 0.13msJavaScript par image pour une valeur qui anime 10 000 éléments

    La valeur écrit une variable CSS ; chaque élément en dérive son style en CSS.

  • 0Rendus React pendant le mouvement

    Les valeurs ne passent jamais par l’état React. Les composants se rendent quand vos props changent, pas quand une image change.

01 · Simple

L’API que vous connaissez, sur le style React ordinaire

timing, spring, interpolate, loop et Animated.event gardent leurs noms et leurs options de React Native. Une valeur se place directement dans une prop style ordinaire : aucun composant spécial à apprendre avant votre première animation.

  • Portez du code React Native en renommant Animated.View en Animated.div.
  • Une seule valeur peut animer à la fois une barre, un cadran et une rangée de cartes, chacun avec sa propre plage.
  • useAnimated gère la recette : elle démarre au montage, redémarre quand une dépendance change et se nettoie au démontage.

Préparation de l’exemple…

Les mêmes appels que dans React Native

Spinner.jsx
// React Native
<Animated.View style={{ transform: [{ rotate }] }} />

// React DOM with @kkwaenggwari/animated — the rest is identical
<Animated.div style={{ transform: [{ rotate }] }} />

const spin = useAnimatedValue(0);
const rotate = spin.interpolate({ inputRange: [0, 1], outputRange: ['0deg', '360deg'] });

Animated.loop(
  Animated.timing(spin, { toValue: 1, duration: 900, easing: Easing.linear, useNativeDriver: true }),
).start();

02 · Rapide

Aucun rendu React à chaque image

Une valeur de hook est une variable CSS. Les interpolations linéaires et l’arithmétique deviennent des expressions calc() exactes de cette variable : chaque image se résume à une écriture, le navigateur dérive le reste. Les mouvements finis de transform et opacity sur les éléments Animated.<tag> sont joués par le navigateur sans callback d’image.

  • Changez le nombre de points : le compteur montre que React s’est rendu une fois par changement, jamais à chaque image.
  • scope écrit la valeur une fois sur un conteneur au lieu de l’écrire sur chaque élément.
  • inspect(element) vous indique quel chemin chaque propriété utilise, et pourquoi.

Préparation de l’exemple…

03 · Stable

Interrompez-le n’importe où. Il continue.

Une nouvelle cible part de la position de l’élément à l’écran, et un ressort conserve aussi sa vitesse : inverser en plein vol tourne en douceur au lieu de s’arrêter d’abord. Les contrôleurs déclarés dans un hook sont arrêtés et libérés au remplacement et au démontage, et le balisage rendu côté serveur continue de s’animer après l’hydratation.

  • Cliquez deux fois rapidement : avec spring, la trajectoire s’infléchit ; avec timing, la position est conservée mais une nouvelle courbe commence.
  • L’arrêt laisse la valeur là où elle est ; rien ne saute à un état final.
  • Aucune boucle d’images orpheline après un démontage, un changement de route ou un onglet masqué.

Préparation de l’exemple…

Construit avec Animated

Besoin d’un composant prêt à l’emploi ? Animated Chorus.

Chiffres qui défilent, surlignages d’onglets qui se déplacent, progression, panneaux et listes animées, à intégrer directement dans React et React Native. Ces trois-là tournent sur cette page en ce moment.

Découvrir Animated Chorus

Démarrer en trois minutes

Installez le paquet, animez votre première valeur, puis choisissez un guide pour la tâche qui vous attend.

npm install @kkwaenggwari/animated

Rechercher

Tapez pour rechercher dans la documentation.