React Academy · Lektion

Animerade komponenter och stilinterpolation

Tillämpa fjädervärden på animated.div och andra element och interpolera värden för komplexa stilberäkningar.

Lektion 2 av 413 steg

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.

Gratis att börja

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

  1. React Spring-grunder: useSpring-hooken
  2. Animerade komponenter och stilinterpolation
  3. useTrail och useChain för sekvenser
  4. Geststyrda animationer med use-gesture
← Tillbaka till React Academy