0Pricing
React Academy · Leçon

Composants animés et interpolation des styles

Appliquez des valeurs de ressort à animated.div et à d’autres éléments, puis interpolez les valeurs pour des calculs de style complexes

Composants animés et interpolation des styles est une leçon React Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage React Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours React Academy comprend 4 leçons au total.

Remplacements directs avec animated.*

react-spring fournit des versions animées de tous les éléments HTML : animated.div, animated.span, animated.img, animated.button, etc. Il s’agit de remplacements directs de leurs équivalents natifs, avec une différence essentielle : ils peuvent accepter des objets SpringValue comme propriétés de style.

Pourquoi seuls les composants animated.* peuvent utiliser les ressorts

Les éléments React ordinaires reçoivent le style sous la forme d’un objet simple contenant des valeurs statiques. Les SpringValues sont des objets spéciaux qui se mettent à jour à chaque image d’animation sans passer par le cycle de nouveau rendu de React. Seuls les composants animated.* savent s’abonner aux mises à jour des SpringValue et modifier directement le style du DOM, en contournant entièrement React pour offrir des performances maximales.

Application de base des styles de ressort

Appliquez directement les valeurs de ressort comme propriétés de style CSS sur des composants animés. Par exemple : style={{ opacity: opacity, transform: transform }}, où opacity et transform sont des SpringValues provenant de useSpring. animated.div lit ces valeurs à chaque battement de RAF (requestAnimationFrame) et les applique au nœud du DOM.

La méthode d’interpolation .to()

Les SpringValues disposent d’une méthode .to() pour transformer leur résultat. Un cas d’utilisation courant consiste à convertir une valeur numérique de ressort en chaîne CSS : x.to(v => "translateX(" + v + "px)"). La fonction reçoit la valeur numérique actuelle et renvoie le résultat transformé, qui est appliqué comme style.

Interpolation d’une plage vers une autre

La méthode .to() accepte également des entrées sous forme de tableaux pour mapper des plages : x.to([0, 1], ["#ff0000", "#00ff00"]) associe la valeur du ressort de la plage [0, 1] à la plage de couleurs allant du rouge au vert. C’est ainsi que vous pouvez interpoler des ressorts numériques vers des couleurs, des chaînes ou toute valeur qui ne peut pas être représentée par un simple nombre.

Interpolation d’une transformation à plusieurs valeurs

Lorsqu’un ressort suit plusieurs valeurs simultanément, vous pouvez les interpoler ensemble. Pour un ressort qui suit { x, y }, vous pouvez écrire : x.to((xVal, yVal) => "translate(" + xVal + "px," + yVal + "px)"). Le rappel .to() reçoit toutes les valeurs dans l’ordre où elles apparaissent dans la configuration du ressort.

Créer des composants personnalisés animés

Vous pouvez encapsuler vos propres composants avec animated() : const AnimatedCard = animated(Card). Le composant encapsulé doit accepter une propriété style et la transmettre à un élément du DOM. AnimatedCard peut alors recevoir des SpringValues dans sa propriété de style, tout comme animated.div.

Combiner plusieurs ressorts

Les animations complexes combinent souvent plusieurs ressorts. Par exemple, une animation d’entrée peut utiliser un ressort pour l’opacité et un autre pour la position verticale. Vous pouvez appliquer les deux au même animated.div : style={{ opacity: opacitySpring.opacity, transform: positionSpring.y.to(y => "translateY(" + y + "px)") }}.

Performances : contourner les nouveaux rendus de React

La caractéristique de performance la plus importante de react-spring est que les mises à jour des valeurs animées contournent le réconciliateur de React. Lorsqu’un ressort s’anime, React n’effectue NOT pas de nouveau rendu du composant à chaque image. À la place, le composant animated.* met directement à jour la propriété de style du nœud DOM dans chaque rappel de requestAnimationFrame, ce qui permet d’obtenir des animations à 60 images par seconde sans la surcharge de React.

Interpoler vers l’opacité et l’échelle

Quelques schémas d’animation courants avec l’interpolation : faire apparaître progressivement un composant lors de son montage avec opacity.to([0, 1], [0, 1]), l’agrandir au survol avec scale.to(s => "scale(" + s + ")") et le faire pivoter lors d’une bascule avec rotation.to(r => "rotate(" + r + "deg)"). En enchaînant ces transformations, vous créez des effets composés.

Limitation et extrapolation

Par défaut, .to() avec des tableaux de plages peut extrapoler au-delà de la plage définie. Vous pouvez contrôler ce comportement avec l’option extrapolate : x.to({ range: [0, 1], output: [0, 100], extrapolate: "clamp" }) empêche le résultat de descendre sous 0 ou de dépasser 100, même si le ressort dépasse sa cible. Cela est utile pour les barres de progression et les animations bornées.

Condition d’utilisation d’un composant animated.*

Pourquoi devez-vous utiliser animated.div au lieu d’un simple div lorsque vous appliquez des valeurs de ressort ?

Récapitulatif de la leçon : composants animés

animated.div, animated.span et animated(CustomComponent) sont des remplacements directs qui acceptent des SpringValues comme propriétés de style. La méthode .to() interpole les valeurs de ressort : elle les convertit en chaînes CSS, en plages de couleurs ou en tout autre format de sortie. Plusieurs ressorts se combinent naturellement sur un même élément. Le principal avantage en matière de performances est que les mises à jour des ressorts contournent les nouveaux rendus de React en modifiant directement les styles du DOM dans les rappels de RAF.

Questions Fréquemment Posées

La leçon « Composants animés et interpolation des styles » est-elle gratuite ?

Oui — le texte complet de « Composants animés et interpolation des styles » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours React Academy, passe à CoddyKit PRO. Le cours React Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Composants animés et interpolation des styles » ?

Appliquez des valeurs de ressort à animated.div et à d’autres éléments, puis interpolez les valeurs pour des calculs de style complexes Tu pratiques React Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer React Academy ?

Aucune expérience préalable n'est requise. React Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Composants animés et interpolation des styles » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon React Academy ?

Oui. Chaque leçon React Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Fondamentaux de React Spring : hook useSpring
  2. Composants animés et interpolation des styles
  3. useTrail et useChain pour les séquences
  4. Animations pilotées par les gestes avec use-gesture
← Retour à React Academy