Liikettä React DOMille · React Nativen Animated API
Kirjoita liike kerran. Se kulkee sujuvasti eikä hajoa koskaan.
Animated tuo React Nativen Animatedin webiin. Yksi arvo ohjaa kuinka monta elementtiä tahansa ilman React-renderöintiä joka ruudussa, tuetun liikkeen toistaa selain itse, ja jokainen keskeytys jatkuu siitä, mitä näytöllä on.
npm install @kkwaenggwari/animatedYksi kelloarvo ohjaa kaikkien 64 muodon aaltoja. Liikuta osoitinta näyttämön yllä.
Mitattu tällä julkaisulla
Mitattu 1.0.0-koonnilla headless-Chromessa pöytä-PC:llä. Luvut riippuvat laitteesta. Miten mittasimme
- 0.00msJavaScript ruutua kohden, kun 400 elementtiä liikkuu
Äärellisen transform- ja opacity-liikkeen Animated-elementeissä toistaa selain. Sivun omat ruutucallbackit eivät tee mitään työtä.
- 0.13msJavaScript ruutua kohden, kun yksi arvo ohjaa 10 000 elementtiä
Arvo kirjoittaa yhden CSS-muuttujan; jokainen elementti johtaa siitä oman tyylinsä CSS:ssä.
- 0React-renderöinnit liikkeen aikana
Arvot eivät koskaan kulje Reactin tilan kautta. Komponentit renderöityvät, kun propsisi muuttuvat, eivät ruudun vaihtuessa.
01 · Yksinkertainen
API, jonka jo tunnet, tavallisessa React style -propissa
timing, spring, interpolate, loop ja Animated.event säilyttävät React Nativen nimet ja asetukset. Arvo menee suoraan tavalliseen style-propsiin, joten erityistä komponenttia ei tarvitse opetella ennen ensimmäistä liikettä.
- Tuo React Native -koodi nimeämällä
Animated.ViewmuotoonAnimated.div. - Yksi arvo voi liikuttaa samanaikaisesti nauhaa, kellotaulua ja korttiriviä, kutakin omalla alueellaan.
useAnimatedomistaa reseptin: se käynnistyy kiinnitettäessä, käynnistyy uudelleen riippuvuuden muuttuessa ja siivoaa irrotettaessa.
Valmistellaan esimerkkiä…
Samat kutsut kuin React Nativessa
// React Native
<Animated.View style={{ transform: [{ rotate }] }} />
// React DOM with @kkwaenggwari/animated — the rest is identical
<Animated.div style={{ transform: [{ rotate }] }} />
const spin = useAnimatedValue(0);
const rotate = spin.interpolate({ inputRange: [0, 1], outputRange: ['0deg', '360deg'] });
Animated.loop(
Animated.timing(spin, { toValue: 1, duration: 900, easing: Easing.linear, useNativeDriver: true }),
).start();02 · Nopea
Ei React-renderöintiä joka ruudussa
Hookin arvo on CSS-muuttuja. Lineaariset interpoloinnit ja aritmetiikka muuttuvat tämän muuttujan tarkoiksi calc()-lausekkeiksi, joten jokainen ruutu on yksi kirjoitus ja selain laskee loput. Äärellisen transform- ja opacity-liikkeen Animated.<tag>-elementeissä toistaa selain ilman ruutucallbackeja.
- Muuta pisteiden määrää: laskuri näyttää, että React renderöi kerran muutosta kohden, ei koskaan ruutua kohden.
scopekirjoittaa arvon kerran säiliöön jokaisen elementin sijaan.inspect(element)kertoo, mitä polkua kukin ominaisuus käyttää ja miksi.
Valmistellaan esimerkkiä…
03 · Vakaa
Keskeytä se missä vain. Se jatkaa.
Uusi kohde alkaa siitä, missä elementti on näytöllä, ja jousi säilyttää myös nopeuden, joten puolivälissä tapahtuva käännös kaartuu sujuvasti pysähtymättä ensin. Hookissa määritellyt ohjaimet pysähtyvät ja vapautetaan korvattaessa ja irrotettaessa, ja palvelimella renderöity markup jatkaa animointia hydraation jälkeen.
- Napsauta kahdesti nopeasti:
spring-asetuksella rata kaartuu,timing-asetuksella sijainti säilyy, mutta uusi käyrä alkaa. - Pysäyttäminen jättää arvon paikalleen; mikään ei hyppää lopputilaan.
- Ei unohtuneita ruutusilmukoita irrottamisen, reitinvaihdon tai piilotetun välilehden jälkeen.
Valmistellaan esimerkkiä…
Mitä voit rakentaa
Kokonaisia malleja säädettävillä asetuksilla ja koko lähdekoodilla.
Kaikki esimerkit- Magneettinen telakkaKuvakkeet kasvavat osoittimen ohittaessa, työntävät naapureitaan sivuun ja asettuvat, kun osoitin poistuu.
moveInputfollowuseAnimatedCSSmultiply - PyyhkäisypakkaVedä päällimmäistä korttia. Kynnyksen yli se lentää pois; muuten se palaa jousella.
dragInputuseAnimatedListenerAnimated.div - Jaettu galleriaRuutu kasvaa yksityiskohtanäkymäksi ja kutistuu takaisin ruudukkoon.
Animated.SceneAnimated.Keepmove
Rakennettu Animatedilla
Tarvitsetko valmiin komponentin? Animated Chorus.
Pyörivät numerot, siirtyvät korttikorostukset, edistyminen, sheetit ja animoidut listat, jotka liittyvät suoraan Reactiin ja React Nativeen. Nämä kolme toimivat juuri nyt tällä sivulla.
Tutustu Animated Chorus -sivustoonAloita kolmessa minuutissa
Asenna paketti, liikuta ensimmäistä arvoa ja valitse sitten opas edessäsi olevaan tehtävään.
npm install @kkwaenggwari/animated