Animierte Komponenten und Style-Interpolation
Federwerte auf animated.div und andere Elemente anwenden und Werte für komplexe Stilberechnungen interpolieren
Animierte Komponenten und Style-Interpolation ist eine kostenlose React Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des React Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.
Direkte Ersatzkomponenten mit animated.*
react-spring stellt animierte Versionen aller HTML-Elemente bereit: animated.div, animated.span, animated.img, animated.button und so weiter. Diese sind direkte Ersatzkomponenten für ihre nativen Gegenstücke, mit einem entscheidenden Unterschied: Sie können SpringValue-Objekte als Style-Props akzeptieren.
Warum nur animated.* Springs verwenden kann
Gewöhnliche React-Elemente erhalten style als einfaches Objekt mit statischen Werten. SpringValues sind spezielle Objekte, die bei jedem Animationsframe aktualisiert werden, ohne Reacts Re-Render-Zyklus zu durchlaufen. Nur animated.*-Komponenten wissen, wie sie Updates von SpringValue abonnieren und den DOM-Style direkt ändern können, wodurch React vollständig umgangen wird und maximale Performance erreicht wird.
Grundlegendes Anwenden von Spring-Styles
Wenden Sie Spring-Werte direkt als CSS-Style-Props auf animierten Komponenten an. Zum Beispiel: style={{ opacity: opacity, transform: transform }}, wobei opacity und transform SpringValues aus useSpring sind. animated.div liest diese Werte bei jedem RAF-Tick (requestAnimationFrame) aus und wendet sie auf den DOM-Knoten an.
Die Interpolationsmethode .to()
SpringValues verfügen über eine .to()-Methode, mit der sich ihre Ausgabe transformieren lässt. Ein häufiger Anwendungsfall ist die Umwandlung eines numerischen Spring-Werts in einen CSS-String: x.to(v => "translateX(" + v + "px)"). Die Funktion erhält den aktuellen numerischen Wert und gibt die transformierte Ausgabe zurück, die als Style angewendet wird.
Interpolation von Bereich zu Bereich
Die .to()-Methode akzeptiert außerdem Array-Eingaben zur Bereichszuordnung: x.to([0, 1], ["#ff0000", "#00ff00"]) ordnet den Spring-Wert aus dem Bereich [0, 1] dem Farbbereich von Rot bis Grün zu. So interpolieren Sie numerische Springs zu Farben, Strings oder beliebigen Werten, die nicht als einfache Zahl dargestellt werden können.
Interpolation von Transformationen mit mehreren Werten
Wenn ein Spring mehrere Werte gleichzeitig verfolgt, können Sie sie gemeinsam interpolieren. Bei einem Spring, der { x, y } verfolgt, können Sie schreiben: x.to((xVal, yVal) => "translate(" + xVal + "px," + yVal + "px)"). Der .to()-Callback erhält alle Werte in der Reihenfolge, in der sie in der Spring-Konfiguration vorkommen.
Animierte eigene Komponenten erstellen
Sie können eigene Komponenten mit animated() umschließen: const AnimatedCard = animated(Card). Die umschlossene Komponente muss eine style-Prop akzeptieren und an ein DOM-Element weiterleiten. Nun kann AnimatedCard in seiner style-Prop SpringValues empfangen, genau wie animated.div.
Mehrere Springs kombinieren
Komplexe Animationen kombinieren häufig mehrere Springs. Eine Eingangsanimation kann beispielsweise einen Spring für die Opazität und einen weiteren für die vertikale Position verwenden. Sie können beide auf dasselbe animated.div anwenden: style={{ opacity: opacitySpring.opacity, transform: positionSpring.y.to(y => "translateY(" + y + "px)") }}.
Performance: React-Neu-Renderings umgehen
Das wichtigste Performance-Merkmal von react-spring besteht darin, dass Updates animierter Werte Reacts Reconciler umgehen. Während ein Spring animiert wird, rendert React die Komponente NICHT bei jedem Frame neu. Stattdessen aktualisiert die animated.*-Komponente die Style-Eigenschaft des DOM-Knotens in jedem requestAnimationFrame-Callback direkt, wodurch Animationen mit 60 fps ohne den Overhead von React möglich werden.
Interpolation zu Opazität und Skalierung
Häufige Animationsmuster mit Interpolation: beim Mounten mit opacity.to([0, 1], [0, 1]) einblenden, beim Hover mit scale.to(s => "scale(" + s + ")") vergrößern und beim Umschalten mit rotation.to(r => "rotate(" + r + "deg)") drehen. Durch das Verketten dieser Transformationen entstehen kombinierte Effekte.
Clamping und Extrapolation
Standardmäßig kann .to() mit Bereichsarrays über den definierten Bereich hinaus extrapolieren. Sie können dies mit der Option extrapolate steuern: x.to({ range: [0, 1], output: [0, 100], extrapolate: "clamp" }) verhindert, dass die Ausgabe unter 0 oder über 100 liegt, selbst wenn der Spring überschwingt. Dies ist nützlich für Fortschrittsbalken und begrenzte Animationen.
Anforderung an die animated.*-Komponente
Warum müssen Sie beim Anwenden von Spring-Werten animated.div statt eines einfachen div verwenden?
Lektionszusammenfassung: Animierte Komponenten
animated.div, animated.span und animated(CustomComponent) sind direkte Ersatzkomponenten, die SpringValues als Style-Props akzeptieren. Die .to()-Methode interpoliert Spring-Werte in CSS-Strings, Farbbereiche oder beliebige Ausgabeformate. Mehrere Springs lassen sich auf einem Element problemlos kombinieren. Der entscheidende Performance-Vorteil: Spring-Updates umgehen React-Neu-Renderings, indem sie DOM-Styles direkt in RAF-Callbacks ändern.
Häufig gestellte Fragen
Ist die Lektion „Animierte Komponenten und Style-Interpolation“ kostenlos?
Ja — der vollständige Text von „Animierte Komponenten und Style-Interpolation“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des React Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Animierte Komponenten und Style-Interpolation“?
Federwerte auf animated.div und andere Elemente anwenden und Werte für komplexe Stilberechnungen interpolieren Du übst React Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um React Academy zu starten?
Keine Vorkenntnisse erforderlich. React Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Animierte Komponenten und Style-Interpolation“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser React Academy-Lektion Code schreiben und ausführen?
Ja. Jede React Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- React Spring: useSpring-Hook
- Animierte Komponenten und Style-Interpolation
- useTrail und useChain für Sequenzen
- Gestengesteuerte Animationen mit use-gesture