Judesys React DOM · React Native Animated API
Parašykite judesį kartą. Jis veikia sklandžiai ir niekada nesugenda.
Animated perkelia React Native Animated į žiniatinklį. Viena reikšmė valdo bet kiek elementų be React perpiešimo kiekviename kadre, palaikomą judesį groja pati naršyklė, o kiekvienas pertraukimas tęsiasi nuo to, kas yra ekrane.
npm install @kkwaenggwari/animatedViena laikrodžio reikšmė valdo visų 64 figūrų bangas. Judinkite žymeklį virš scenos.
Išmatuota šiame leidime
Išmatuota su 1.0.0 versija Chrome be sąsajos staliniame PC. Skaičiai priklauso nuo įrenginio. Kaip matavome
- 0.00msJavaScript per kadrą, kol juda 400 elementų
Baigtinį transform ir opacity judesį Animated elementuose groja naršyklė. Paties puslapio kadrų callback neatlieka jokio darbo.
- 0.13msJavaScript per kadrą, kai viena reikšmė valdo 10 000 elementų
Reikšmė įrašo vieną CSS kintamąjį; kiekvienas elementas CSS iš jo išveda savo stilių.
- 0React perpiešimai judesio metu
Reikšmės niekada nepereina per React būseną. Komponentai perpiešiami, kai pasikeičia jūsų props, o ne kai pasikeičia kadras.
01 · Paprasta
Jau žinomas API, paprastame React style
timing, spring, interpolate, loop ir Animated.event išlaiko React Native pavadinimus ir konfigūracijas. Reikšmė patenka tiesiai į paprastą style prop, todėl prieš pirmąjį judesį nereikia mokytis jokio specialaus komponento.
- Perkelkite React Native kodą pervadindami
Animated.ViewįAnimated.div. - Viena reikšmė gali vienu metu judinti juostelę, ciferblatą ir kortelių eilę, kiekvieną savo diapazone.
useAnimatedvaldo receptą: pradeda prijungiant, pradeda iš naujo pasikeitus priklausomybei ir sutvarko atjungiant.
Ruošiamas pavyzdys…
Tie patys kvietimai kaip React Native
// 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 · Greita
Jokio React perpiešimo kiekviename kadre
hook reikšmė yra CSS kintamasis. Tiesinės interpoliacijos ir aritmetika tampa tiksliomis to kintamojo calc() išraiškomis, todėl kiekvienas kadras yra vienas įrašymas, o likusius skaičiavimus atlieka naršyklė. Baigtinį transform ir opacity judesį Animated.<tag> elementuose naršyklė groja be kadrų callback.
- Pakeiskite taškų skaičių: skaitiklis rodo, kad React perpiešė vieną kartą per pakeitimą, niekada per kadrą.
scopeįrašo reikšmę vieną kartą į konteinerį, o ne į kiekvieną elementą.inspect(element)pasako, kokį kelią naudoja kiekviena savybė ir kodėl.
Ruošiamas pavyzdys…
03 · Stabilu
Pertraukite bet kur. Jis tęsia.
Naujas tikslas prasideda ten, kur elementas yra ekrane, o spyruoklė išlaiko ir greitį, todėl apsisukimas pusiaukelėje sklandžiai išlinksta, užuot pirmiausia sustojęs. hook aprašyti valdikliai sustabdomi ir atlaisvinami pakeičiant ir atjungiant, o serveryje atvaizduotas markup po hidratacijos toliau animuojamas.
- Spustelėkite du kartus greitai: su
springtrajektorija išlinksta, sutimingpadėtis išlieka, bet prasideda nauja kreivė. - Sustabdymas palieka reikšmę ten, kur ji yra; niekas nepašoka į galutinę būseną.
- Jokių pamirštų kadrų ciklų po atjungimo, maršruto pakeitimo ar paslėpto skirtuko.
Ruošiamas pavyzdys…
Ką galite sukurti
Išbaigti šablonai su reguliuojamais nustatymais ir visu pirminiu kodu.
Visi pavyzdžiai- Magnetinė juostaPiktogramos padidėja praeinant žymekliui, nustumia kaimynes ir nurimsta, kai jis nueina.
moveInputfollowuseAnimatedCSSmultiply - Braukiamos kortelėsVilkite viršutinę kortelę. Peržengusi slenkstį ji nuskrenda; kitaip grįžta su spyruokle.
dragInputuseAnimatedListenerAnimated.div - Bendra galerijaPlytelė išauga į išsamų vaizdą ir susitraukia atgal į tinklelį.
Animated.SceneAnimated.Keepmove
Sukurta su Animated
Reikia paruošto komponento? Animated Chorus.
Besisukantys skaičiai, keliaujantys kortelių paryškinimai, eiga, sheet ir animuoti sąrašai, kurie tiesiai įsiterpia į React ir React Native. Šie trys veikia būtent dabar šiame puslapyje.
Apsilankykite Animated ChorusPradėkite per tris minutes
Įdiekite paketą, pajudinkite pirmąją reikšmę, tada pasirinkite vadovą jūsų laukiančiai užduočiai.
npm install @kkwaenggwari/animated