React Academy · Les

Geanimeerde componenten en style-interpolatie

Pas springwaarden toe op animated.div en andere elementen en interpoleer waarden voor complexe stijlberekeningen

Les 2 van 413 stappen

Geanimeerde componenten en style-interpolatie is een gratis React Academy-les op CoddyKit. Dit is les 2 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject React Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus React Academy bevat in totaal 4 lessen.

Directe vervangers van animated.*

react-spring biedt geanimeerde versies van alle HTML-elementen: animated.div, animated.span, animated.img, animated.button enzovoort. Dit zijn directe vervangers van hun oorspronkelijke tegenhangers, met één belangrijk verschil: ze kunnen SpringValue-objecten als stijlprops accepteren.

Waarom alleen animated.* springs kunnen gebruiken

Gewone React-elementen ontvangen de stijl als een gewoon object met statische waarden. SpringValues zijn speciale objecten die bij elk animatieframe worden bijgewerkt zonder de her-rendercyclus van React te doorlopen. Alleen animated.*-componenten weten hoe ze zich op updates van SpringValue kunnen abonneren en de DOM-stijl rechtstreeks kunnen aanpassen, waardoor React volledig wordt omzeild voor maximale prestaties.

Springstijlen eenvoudig toepassen

Pas springwaarden rechtstreeks toe als CSS-stijlprops op geanimeerde componenten. Bijvoorbeeld: style={{ opacity: opacity, transform: transform }}, waarbij opacity en transform SpringValues van useSpring zijn. animated.div leest deze waarden bij elke RAF-tik (requestAnimationFrame) en past ze toe op het DOM-knooppunt.

De interpolatiemethode .to()

SpringValues hebben een methode .to() om hun uitvoer te transformeren. Een veelgebruikte toepassing is een numerieke springwaarde omzetten naar een CSS-tekenreeks: x.to(v => "translateX(" + v + "px)"). De functie ontvangt de huidige numerieke waarde en retourneert de getransformeerde uitvoer, die als stijl wordt toegepast.

Interpolatie van bereik naar bereik

De methode .to() accepteert ook array-invoer voor het toewijzen van bereiken: x.to([0, 1], ["#ff0000", "#00ff00"]) wijst de springwaarde uit het bereik [0, 1] toe aan het kleurverloop van rood naar groen. Zo interpoleer je numerieke springs naar kleuren, tekenreeksen of andere waarden die niet als een gewoon getal kunnen worden weergegeven.

Interpolatie van transformaties met meerdere waarden

Wanneer een spring meerdere waarden tegelijk volgt, kun je deze samen interpoleren. Voor een spring die { x, y } volgt, kun je schrijven: x.to((xVal, yVal) => "translate(" + xVal + "px," + yVal + "px)"). De callback van .to() ontvangt alle waarden in de volgorde waarin ze in de springconfiguratie voorkomen.

Aangepaste geanimeerde componenten maken

Je kunt je eigen componenten omhullen met animated(): const AnimatedCard = animated(Card). De omhulde component moet een style-prop accepteren en deze doorgeven aan een DOM-element. AnimatedCard kan nu SpringValues ontvangen in zijn stijlprop, net als animated.div.

Meerdere springs combineren

Complexe animaties combineren vaak meerdere springs. Een binnenkomstanimatie kan bijvoorbeeld één spring voor opacity en een andere voor de verticale positie gebruiken. Je kunt beide toepassen op dezelfde animated.div: style={{ opacity: opacitySpring.opacity, transform: positionSpring.y.to(y => "translateY(" + y + "px)") }}.

Prestaties: React-renders overslaan

Het belangrijkste prestatiekenmerk van react-spring is dat updates van geanimeerde waarden de reconciler van React omzeilen. Terwijl een spring animeert, rendert React de component NIET bij elk frame opnieuw. In plaats daarvan werkt de animated.*-component de stijleigenschap van het DOM-knooppunt rechtstreeks bij in elke requestAnimationFrame-callback, waardoor animaties met 60 fps mogelijk zijn zonder extra belasting door React.

Interpoleren naar opacity en scale

Veelvoorkomende animatiepatronen met interpolatie: geleidelijk zichtbaar worden bij het koppelen met opacity.to([0, 1], [0, 1]), groter worden wanneer je de muisaanwijzer erover beweegt met scale.to(s => "scale(" + s + ")"), en draaien bij het omschakelen met rotation.to(r => "rotate(" + r + "deg)"). Door deze transformaties te koppelen, ontstaan samengestelde effecten.

Begrenzen en extrapoleren

Standaard kan .to() met bereikarrays extrapoleren buiten het gedefinieerde bereik. Je kunt dit regelen met de optie extrapolate: x.to({ range: [0, 1], output: [0, 100], extrapolate: "clamp" }) voorkomt dat de uitvoer lager dan 0 of hoger dan 100 wordt, zelfs als de spring voorbij de grens schiet. Dit is handig voor voortgangsbalken en animaties met vaste grenzen.

Vereiste van de animated.*-component

Waarom moet je animated.div gebruiken in plaats van een gewone div wanneer je springwaarden toepast?

Samenvatting van de les: geanimeerde componenten

animated.div, animated.span en animated(CustomComponent) zijn directe vervangers die SpringValues als stijlprops accepteren. De methode .to() interpoleert springwaarden: wijs ze toe aan CSS-tekenreeksen, kleurbereiken of elk ander uitvoerformaat. Meerdere springs kun je vanzelfsprekend op één element combineren. Het belangrijkste prestatievoordeel: updates van springs omzeilen her-renders van React door DOM-stijlen rechtstreeks aan te passen in RAF-callbacks.

Gratis beginnen

Leer React met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
88
Lessen
324

Veelgestelde vragen

Is de les “Geanimeerde componenten en style-interpolatie” gratis?

Ja — de volledige tekst van “Geanimeerde componenten en style-interpolatie” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus React Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus React Academy bevat in totaal 4 lessen.

Wat leer ik in “Geanimeerde componenten en style-interpolatie”?

Pas springwaarden toe op animated.div en andere elementen en interpoleer waarden voor complexe stijlberekeningen Je oefent met React Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met React Academy te beginnen?

Ervaring vooraf is niet nodig. React Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.

Hoe lang duurt de les “Geanimeerde componenten en style-interpolatie”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over React Academy?

Ja. Elke les over React Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. React Spring Core: useSpring-hook
  2. Geanimeerde componenten en style-interpolatie
  3. useTrail en useChain voor sequenties
  4. Gebaren gestuurde animaties met use-gesture
← Terug naar React Academy