Animerade komponenter och stilinterpolation
Tillämpa fjädervärden på animated.div och andra element och interpolera värden för komplexa stilberäkningar.
Animerade komponenter och stilinterpolation är en gratis lektion i React Academy på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för React Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i React Academy innehåller totalt 4 lektioner.
animated.* som direkta ersättningar
react-spring tillhandahåller animerade versioner av alla HTML-element: animated.div, animated.span, animated.img, animated.button och så vidare. De är direkta ersättare för sina inbyggda motsvarigheter, med en viktig skillnad: de kan ta emot SpringValue-objekt som style-egenskaper.
Varför endast animated.* kan använda springs
Vanliga React-element tar emot style som ett vanligt objekt med statiska värden. SpringValue-objekt är specialobjekt som uppdateras vid varje animeringsbildruta utan att gå genom Reacts omrenderingscykel. Endast animated.*-komponenter vet hur de ska prenumerera på SpringValue-uppdateringar och direkt ändra DOM:ens style, vilket helt förbigår React för maximal prestanda.
Grundläggande tillämpning av spring-stilar
Tillämpa springvärden direkt som CSS-style-egenskaper på animerade komponenter. Exempel: style={{ opacity: opacity, transform: transform }}, där opacity och transform är SpringValue-objekt från useSpring. animated.div läser av dessa värden vid varje RAF-tick (requestAnimationFrame) och tillämpar dem på DOM-noden.
Interpoleringsmetoden .to()
SpringValue-objekt har en .to()-metod för att transformera sina utdata. Ett vanligt användningsfall är att omvandla ett numeriskt springvärde till en CSS-sträng: x.to(v => "translateX(" + v + "px)"). Funktionen tar emot det aktuella numeriska värdet och returnerar den transformerade utdatan, som tillämpas som style.
Interpolering mellan intervall
Metoden .to() accepterar även arrayer som indata för intervallmappning: x.to([0, 1], ["#ff0000", "#00ff00"]) mappar springvärdet från intervallet [0, 1] till färgintervallet från rött till grönt. På så sätt kan du interpolera numeriska springvärden till färger, strängar eller andra värden som inte kan representeras som vanliga tal.
Interpolering av transformationer med flera värden
När ett springvärde följer flera värden samtidigt kan du interpolera dem tillsammans. För ett springvärde som följer { x, y } kan du skriva: x.to((xVal, yVal) => "translate(" + xVal + "px," + yVal + "px)"). Callback-funktionen för .to() tar emot alla värden i den ordning de förekommer i spring-konfigurationen.
Skapa animerade anpassade komponenter
Du kan omsluta dina egna komponenter med animated(): const AnimatedCard = animated(Card). Den omslutna komponenten måste acceptera en style-prop och vidarebefordra den till ett DOM-element. Nu kan AnimatedCard ta emot SpringValue-objekt i sin style-prop, precis som animated.div.
Kombinera flera springs
Komplexa animeringar kombinerar ofta flera springs. En entréanimering kan till exempel använda ett springvärde för opacitet och ett annat för vertikal position. Du kan tillämpa båda på samma animated.div: style={{ opacity: opacitySpring.opacity, transform: positionSpring.y.to(y => "translateY(" + y + "px)") }}.
Prestanda: förbigå Reacts omrenderingar
Den viktigaste prestandaegenskapen hos react-spring är att uppdateringar av animerade värden förbigår Reacts reconciler. När ett springvärde animeras renderar React INTE om komponenten vid varje bildruta. I stället uppdaterar animated.*-komponenten direkt DOM-nodens style-egenskap i varje requestAnimationFrame-callback, vilket gör animeringar med 60 bilder per sekund möjliga utan omkostnaderna för React.
Interpolera till opacitet och skalning
Vanliga animeringsmönster med interpolering: tona in vid montering med opacity.to([0, 1], [0, 1]), skala upp vid hovring med scale.to(s => "scale(" + s + ")") och rotera vid växling med rotation.to(r => "rotate(" + r + "deg)"). Genom att kedja dessa transformationer skapar du sammansatta effekter.
Begränsning och extrapolering
Som standard kan .to() med intervallarrayer extrapolera utanför det definierade intervallet. Du kan styra detta med alternativet extrapolate: x.to({ range: [0, 1], output: [0, 100], extrapolate: "clamp" }) förhindrar att utdatan går under 0 eller över 100, även om springvärdet överskrider intervallet. Detta är användbart för förloppsindikatorer och begränsade animeringar.
Krav på animated.*-komponenter
Varför måste du använda animated.div i stället för en vanlig div när du tillämpar springvärden?
Lektionssammanfattning: animerade komponenter
animated.div, animated.span och animated(CustomComponent) är direkta ersättare som accepterar SpringValue-objekt som style-egenskaper. Metoden .to() interpolerar springvärden: mappa dem till CSS-strängar, färgintervall eller valfritt utdataformat. Flera springs kan kombineras naturligt på ett och samma element. Den viktigaste prestandafördelen är att springuppdateringar förbigår Reacts omrenderingar genom att direkt ändra DOM-stilar i RAF-callbacks.
Lär dig React med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 88
- Lektioner
- 324
Vanliga frågor
Är lektionen ”Animerade komponenter och stilinterpolation” gratis?
Ja – hela texten till ”Animerade komponenter och stilinterpolation” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i React Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i React Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Animerade komponenter och stilinterpolation”?
Tillämpa fjädervärden på animated.div och andra element och interpolera värden för komplexa stilberäkningar. Ni övar på React Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig React Academy?
Du behöver inga förkunskaper. Utbildningen i React Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Animerade komponenter och stilinterpolation”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här React Academy-lektionen?
Ja. Varje React Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- React Spring-grunder: useSpring-hooken
- Animerade komponenter och stilinterpolation
- useTrail och useChain för sekvenser
- Geststyrda animationer med use-gesture