Pohyb pre React DOM · API Animated z React Native
Napíšte pohyb raz. Beží plynulo a nikdy sa nepokazí.
Animated prináša Animated z React Native na web. Jedna hodnota riadi ľubovoľný počet prvkov bez renderu Reactu v každej snímke, podporovaný pohyb prehráva samotný prehliadač a každé prerušenie pokračuje od toho, čo je na obrazovke.
npm install @kkwaenggwari/animatedJediná hodnota hodín riadi vlnenie všetkých 64 tvarov. Prejdite ukazovateľom nad scénou.
Namerané na tomto vydaní
Namerané zostavením 1.0.0 v Chrome bez rozhrania na stolnom PC. Čísla sa líšia podľa zariadenia. Ako sme merali
- 0.00msJavaScript na snímku, kým sa pohybuje 400 prvkov
Konečný pohyb transform a opacity na prvkoch Animated prehráva prehliadač. Vlastné callbacky snímok stránky nerobia žiadnu prácu.
- 0.13msJavaScript na snímku, keď jedna hodnota riadi 10 000 prvkov
Hodnota zapisuje jednu premennú CSS; každý prvok si z nej v CSS odvodí svoj štýl.
- 0Rendery Reactu počas pohybu
Hodnoty nikdy neprechádzajú stavom Reactu. Komponenty sa renderujú, keď sa zmenia vaše props, nie keď sa zmení snímka.
01 · Jednoduché
API, ktoré už poznáte, na bežnom style Reactu
timing, spring, interpolate, loop a Animated.event si zachovávajú názvy a konfigurácie z React Native. Hodnota ide priamo do bežnej prop style, takže pred prvým pohybom sa nemusíte učiť žiadny zvláštny komponent.
- Preneste kód z React Native premenovaním
Animated.ViewnaAnimated.div. - Jedna hodnota môže naraz hýbať pruhom, ciferníkom aj radom kariet, každým v jeho vlastnom rozsahu.
useAnimatedvlastní recept: spustí sa pri pripojení, znova sa spustí pri zmene závislosti a pri odpojení po sebe uprace.
Príprava príkladu…
Rovnaké volania ako v 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 · Rýchle
Žiadny render Reactu v každej snímke
Hodnota hooku je premenná CSS. Lineárne interpolácie a aritmetika sa stávajú presnými výrazmi calc() tejto premennej, takže každá snímka je jeden zápis a zvyšok odvodí prehliadač. Konečný pohyb transform a opacity na prvkoch Animated.<tag> prehráva prehliadač bez callbackov snímok.
- Zmeňte počet bodiek: počítadlo ukazuje, že React renderoval raz na zmenu, nikdy na snímku.
scopezapíše hodnotu raz na kontajner namiesto na každý prvok.inspect(element)povie, ktorú cestu každá vlastnosť používa a prečo.
Príprava príkladu…
03 · Stabilné
Prerušte ho kdekoľvek. Pokračuje.
Nový cieľ začne tam, kde je prvok na obrazovke, a pružina navyše zachová svoju rýchlosť, takže obrat v polovici cesty plynulo zatočí namiesto toho, aby sa najprv zastavil. Controllery deklarované v hooku sa pri nahradení a odpojení zastavia a uvoľnia a markup vyrenderovaný na serveri sa po hydratácii ďalej animuje.
- Kliknite dvakrát rýchlo za sebou: so
springsa dráha ohne, stimingsa zachová poloha, ale začne nová krivka. - Zastavenie nechá hodnotu tam, kde je; nič neskočí do koncového stavu.
- Žiadne zabudnuté slučky snímok po odpojení, zmene routy alebo skrytí karty.
Príprava príkladu…
- Magnetický dokIkony sa pri prechode ukazovateľa zväčšujú, odsúvajú susedov a keď ukazovateľ odíde, upokoja sa.
moveInputfollowuseAnimatedCSSmultiply - Balíček kariet na odsúvanieŤahajte vrchnú kartu. Za prahom odletí; inak sa pružne vráti.
dragInputuseAnimatedListenerAnimated.div - Zdieľaná galériaDlaždica sa rozrastie do detailu a zasa sa zmenší späť do mriežky.
Animated.SceneAnimated.Keepmove
Postavené na Animated
Potrebujete hotový komponent? Animated Chorus.
Rolujúce čísla, putujúce zvýraznenia kariet, priebeh, sheety a animované zoznamy, ktoré hneď zapadnú do React aj React Native. Tieto tri práve teraz bežia na tejto stránke.
Navštíviť Animated ChorusZačnite za tri minúty
Nainštalujte balík, pohnite prvou hodnotou a potom si vyberte sprievodcu pre úlohu pred vami.
npm install @kkwaenggwari/animated