Pokret za React DOM · Animated API iz React Nativea
Napišite pokret jednom. Radi glatko i nikad se ne kvari.
Animated donosi Animated iz React Nativea na web. Jedna vrijednost upravlja bilo kojim brojem elemenata bez Reactova renderiranja u svakom kadru, podržani pokret reproducira sam preglednik, a svaki prekid nastavlja od onoga što je na zaslonu.
npm install @kkwaenggwari/animatedJedna vrijednost sata upravlja valovima svih 64 oblika. Pomičite pokazivač iznad pozornice.
Izmjereno na ovom izdanju
Izmjereno s izgradnjom 1.0.0 u Chromeu bez sučelja na stolnom PC-u. Brojevi ovise o uređaju. Kako smo mjerili
- 0.00msJavaScript po kadru dok se pomiče 400 elemenata
Konačni pokret transforma i opacityja na Animated elementima reproducira preglednik. Vlastiti callbackovi kadrova stranice ne obavljaju nikakav posao.
- 0.13msJavaScript po kadru kad jedna vrijednost upravlja s 10.000 elemenata
Vrijednost zapisuje jednu CSS varijablu; svaki element iz nje u CSS-u izvodi svoj stil.
- 0Reactova renderiranja tijekom pokreta
Vrijednosti nikad ne prolaze kroz Reactovo stanje. Komponente se renderiraju kad se promijene vaši props, a ne kad se promijeni kadar.
01 · Jednostavno
API koji već poznajete, na običnom Reactovu style
timing, spring, interpolate, loop i Animated.event zadržavaju nazive i konfiguracije iz React Nativea. Vrijednost ide izravno u običan prop style, pa prije prvog pokreta ne treba učiti nikakvu posebnu komponentu.
- Prenesite kod iz React Nativea preimenovanjem
Animated.ViewuAnimated.div. - Jedna vrijednost može istodobno pomicati traku, brojčanik i red kartica, svaku s vlastitim rasponom.
useAnimatedposjeduje recept: pokreće se pri montiranju, ponovno se pokreće kad se ovisnost promijeni i čisti pri demontiranju.
Priprema primjera…
Isti pozivi kao u React Nativeu
// 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 · Brzo
Bez Reactova renderiranja u svakom kadru
Vrijednost hooka je CSS varijabla. Linearne interpolacije i aritmetika postaju točni izrazi calc() te varijable, pa je svaki kadar jedan zapis, a ostatak izvodi preglednik. Konačni pokret transforma i opacityja na elementima Animated.<tag> reproducira preglednik bez callbackova kadrova.
- Promijenite broj točaka: brojač pokazuje da je React renderirao jednom po promjeni, nikad po kadru.
scopezapisuje vrijednost jednom na spremnik umjesto na svaki element.inspect(element)kaže koji put koristi svako svojstvo i zašto.
Priprema primjera…
03 · Stabilno
Prekinite ga bilo gdje. Nastavlja.
Novi cilj počinje odakle je element na zaslonu, a opruga zadržava i brzinu, pa se okretanje na pola puta glatko zakreće umjesto da najprije stane. Kontroleri deklarirani u hooku zaustavljaju se i oslobađaju pri zamjeni i demontiranju, a markup renderiran na poslužitelju nastavlja se animirati nakon hidratacije.
- Kliknite dvaput brzo: sa
springputanja se savija, stimingpoložaj ostaje, ali počinje nova krivulja. - Zaustavljanje ostavlja vrijednost gdje jest; ništa ne skače u završno stanje.
- Nema zaboravljenih petlji kadrova nakon demontiranja, promjene rute ili skrivene kartice.
Priprema primjera…
- Magnetski dokIkone rastu dok pokazivač prolazi, guraju susjede u stranu i smiruju se kad ode.
moveInputfollowuseAnimatedCSSmultiply - Špil za povlačenjePovucite gornju karticu. Iza praga odleti; inače se vrati oprugom.
dragInputuseAnimatedListenerAnimated.div - Dijeljena galerijaPločica se širi u prikaz detalja i smanjuje natrag u mrežu.
Animated.SceneAnimated.Keepmove
Izgrađeno na Animated
Trebate gotovu komponentu? Animated Chorus.
Brojevi koji se vrte, isticanja kartica koja putuju, napredak, sheetovi i animirani popisi koji se izravno uklapaju u React i React Native. Ova tri upravo sada rade na ovoj stranici.
Posjetite Animated ChorusZapočnite za tri minute
Instalirajte paket, pomaknite prvu vrijednost, a zatim odaberite vodič za zadatak pred vama.
npm install @kkwaenggwari/animated