React Academy · Oppitunti

Animoidut komponentit ja tyylien interpolointi

Soveltakaa spring-arvoja animated.div-elementtiin ja muihin elementteihin sekä interpoloikaa arvoja monimutkaisia tyylilaskelmia varten

Oppitunti 2/413 vaihetta

Animoidut komponentit ja tyylien interpolointi on ilmainen React Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu React Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. React Academy-kurssilla on yhteensä 4 oppituntia.

animated.*-komponenttien suorat korvaajat

react-spring tarjoaa animoidut versiot kaikista HTML-elementeistä: animated.div, animated.span, animated.img, animated.button ja niin edelleen. Ne ovat natiivien vastineidensa suoria korvaajia, mutta niillä on yksi ratkaiseva ero: ne voivat vastaanottaa SpringValue-olioita style-propseina.

Miksi vain animated.* voi käyttää jousia

Tavalliset React-elementit vastaanottavat stylen tavallisena oliona, jonka arvot ovat staattisia. SpringValues ovat erityisiä olioita, jotka päivittyvät jokaisella animaation framella ilman Reactin uudelleenrenderöintikiertoa. Vain animated.*-komponentit osaavat tilata SpringValue-päivityksiä ja muuttaa DOM:n style-ominaisuutta suoraan, jolloin React ohitetaan kokonaan parhaan mahdollisen suorituskyvyn saavuttamiseksi.

Jousityylin peruskäyttö

Välittäkää jousiarvot suoraan CSS-tyylimäärityksinä animated-komponenteille. Esimerkiksi: style={{ opacity: opacity, transform: transform }}, jossa opacity ja transform ovat useSpring-funktion palauttamia SpringValue-olioita. animated.div lukee nämä arvot jokaisella RAF (requestAnimationFrame) -tahdilla ja soveltaa ne DOM-solmuun.

.to()-interpolointimenetelmä

SpringValue-olioilla on .to()-metodi, jolla niiden tulosta voi muuntaa. Yleinen käyttötapa on muuntaa numeerinen jousiarvo CSS-merkkijonoksi: x.to(v => "translateX(" + v + "px)"). Funktio vastaanottaa nykyisen numeerisen arvon ja palauttaa muunnetun tuloksen, jota käytetään tyylinä.

Alueiden välinen interpolointi

.to()-metodi hyväksyy myös taulukkomuotoiset syötteet alueiden väliseen kuvaukseen: x.to([0, 1], ["#ff0000", "#00ff00"]) kuvaa jousiarvon alueelta [0, 1] väreille punaisesta vihreään. Näin numeeriset jousiarvot voidaan interpoloida väreiksi, merkkijonoiksi tai miksi tahansa arvoiksi, joita ei voi esittää tavallisina lukuina.

Usean arvon muunnosinterpolointi

Kun jousi seuraa useita arvoja samanaikaisesti, voitte interpoloida ne yhdessä. Jos jousi seuraa arvoja { x, y }, voitte kirjoittaa: x.to((xVal, yVal) => "translate(" + xVal + "px," + yVal + "px)"). .to()-takaisinkutsu vastaanottaa kaikki arvot siinä järjestyksessä, jossa ne esiintyvät jousen config-määrityksessä.

Animoitujen mukautettujen komponenttien luominen

Voitte kääriä omat komponenttinne animated()-funktiolla: const AnimatedCard = animated(Card). Kääritty komponentti hyväksyy style-proพin ja välittää sen DOM-elementille. Nyt AnimatedCard voi vastaanottaa SpringValue-olioita style-propissaan aivan kuten animated.div.

Useiden jousien yhdistäminen

Monimutkaisissa animaatioissa yhdistetään usein useita jousia. Sisääntuloanimaatiossa voidaan käyttää esimerkiksi yhtä jousta opacity-arvolle ja toista pystysuuntaiselle sijainnille. Voitte käyttää molempia samassa animated.div-elementissä: style={{ opacity: opacitySpring.opacity, transform: positionSpring.y.to(y => "translateY(" + y + "px)") }}.

Suorituskyky: Reactin uudelleenrenderöintien ohittaminen

react-springin tärkein suorituskykyominaisuus on, että animoitujen arvojen päivitykset ohittavat Reactin reconcilerin. Kun jousi animoi, React EI renderöi komponenttia uudelleen jokaisella framella. Sen sijaan animated.*-komponentti päivittää DOM-solmun style-ominaisuuden suoraan jokaisessa requestAnimationFrame-takaisinkutsussa, mikä mahdollistaa 60 fps:n animaatiot ilman Reactin aiheuttamaa kuormaa.

Interpolointi opacity- ja scale-arvoihin

Yleisiä interpolointia hyödyntäviä animaatiomalleja ovat häivytys näkyviin komponentin luonnin yhteydessä käyttämällä opacity.to([0, 1], [0, 1])-kutsua, suurentaminen osoitinta leijutettaessa käyttämällä scale.to(s => "scale(" + s + ")")-kutsua ja kiertäminen vaihdon yhteydessä käyttämällä rotation.to(r => "rotate(" + r + "deg)")-kutsua. Näiden muunnosten ketjuttaminen luo yhdistelmävaikutuksia.

Rajoittaminen ja ekstrapolointi

Oletusarvoisesti .to()-metodi voi alueita kuvaavien taulukoiden avulla ekstrapoloida määritetyn alueen ulkopuolelle. Voitte hallita tätä extrapolate-asetuksella: x.to({ range: [0, 1], output: [0, 100], extrapolate: "clamp" }) estää tulosta alittamasta arvoa 0 tai ylittämästä arvoa 100, vaikka jousi ylittäisi tavoitearvon. Tämä on hyödyllistä edistymispalkeissa ja rajatuissa animaatioissa.

animated.*-komponentin vaatimus

Miksi jousiarvoja käytettäessä on käytettävä animated.div-komponenttia tavallisen div-elementin sijaan?

Oppitunnin kertaus: animoidut komponentit

animated.div, animated.span ja animated(CustomComponent) ovat suoria korvaajia, jotka hyväksyvät SpringValue-oliot style-propseina. .to()-metodi interpoloi jousiarvoja: se voi muuntaa ne CSS-merkkijonoiksi, väreiksi tai mihin tahansa muuhun tulostusmuotoon. Useat jouset yhdistyvät luontevasti samassa elementissä. Keskeinen suorituskykyetu on, että jousipäivitykset ohittavat Reactin uudelleenrenderöinnit muuttamalla DOM-tyylejä suoraan RAF-takaisinkutsuissa.

Aloita maksutta

Opi React tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
88
Oppitunnit
324

Usein kysytyt kysymykset

Onko oppitunti ”Animoidut komponentit ja tyylien interpolointi” ilmainen?

Kyllä – oppitunnin ”Animoidut komponentit ja tyylien interpolointi” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko React Academy-kurssin, päivitä CoddyKit PROhon. React Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Animoidut komponentit ja tyylien interpolointi”?

Soveltakaa spring-arvoja animated.div-elementtiin ja muihin elementteihin sekä interpoloikaa arvoja monimutkaisia tyylilaskelmia varten Harjoittelet React Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni React Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin React Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Animoidut komponentit ja tyylien interpolointi”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä React Academy-oppitunnilla?

Kyllä. Jokainen React Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. React Springin perusteet: useSpring-hook
  2. Animoidut komponentit ja tyylien interpolointi
  3. useTrail ja useChain sekvensseihin
  4. Eleohjatut animaatiot use-gesturella
← Takaisin: React Academy