Gibanje za React DOM · Animated API iz React Nativa
Gibanje napišite enkrat. Teče gladko in se nikoli ne pokvari.
Animated prinaša Animated iz React Nativa na splet. Ena vrednost upravlja poljubno število elementov brez upodabljanja Reacta v vsaki sličici, podprto gibanje predvaja kar brskalnik, vsaka prekinitev pa nadaljuje od tistega, kar je na zaslonu.
npm install @kkwaenggwari/animatedEna vrednost ure upravlja valove vseh 64 oblik. Premikajte kazalec nad odrom.
Izmerjeno na tej izdaji
Izmerjeno z gradnjo 1.0.0 v Chromu brez vmesnika na namiznem PC-ju. Številke so odvisne od naprave. Kako smo merili
- 0.00msJavaScript na sličico, medtem ko se premika 400 elementov
Končno gibanje transforma in opacityja na elementih Animated predvaja brskalnik. Lastni callbacki sličic strani ne opravijo nobenega dela.
- 0.13msJavaScript na sličico, ko ena vrednost upravlja 10.000 elementov
Vrednost zapiše eno spremenljivko CSS; vsak element iz nje v CSS izpelje svoj slog.
- 0Upodobitve Reacta med gibanjem
Vrednosti nikoli ne gredo skozi stanje Reacta. Komponente se upodobijo, ko se spremenijo vaši props, ne pa, ko se spremeni sličica.
01 · Preprosto
API, ki ga že poznate, na navadnem style Reacta
timing, spring, interpolate, loop in Animated.event ohranijo imena in nastavitve iz React Nativa. Vrednost gre neposredno v navaden prop style, zato se pred prvim gibanjem ni treba učiti nobene posebne komponente.
- Kodo iz React Nativa prenesete tako, da
Animated.Viewpreimenujete vAnimated.div. - Ena vrednost lahko hkrati premika trak, številčnico in vrsto kartic, vsako z lastnim razponom.
useAnimatedima v lasti recept: zažene se ob priklopu, znova se zažene, ko se odvisnost spremeni, in pospravi ob odklopu.
Pripravljanje primera …
Isti klici kot v React Nativu
// 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 · Hitro
Brez upodabljanja Reacta v vsaki sličici
Vrednost hooka je spremenljivka CSS. Linearne interpolacije in aritmetika postanejo natančni izrazi calc() te spremenljivke, zato je vsaka sličica en zapis, ostalo pa izračuna brskalnik. Končno gibanje transforma in opacityja na elementih Animated.<tag> predvaja brskalnik brez callbackov sličic.
- Spremenite število točk: števec pokaže, da je React upodobil enkrat na spremembo, nikoli na sličico.
scopezapiše vrednost enkrat na vsebnik namesto na vsak element.inspect(element)pove, katero pot uporablja vsaka lastnost in zakaj.
Pripravljanje primera …
03 · Stabilno
Prekinite ga kjer koli. Nadaljuje.
Nov cilj se začne tam, kjer je element na zaslonu, vzmet pa ohrani tudi hitrost, zato se obrat na pol poti gladko ukrivi, namesto da bi se najprej ustavil. Krmilniki, deklarirani v hooku, se ob zamenjavi in odklopu ustavijo in sprostijo, markup, upodobljen na strežniku, pa se po hidraciji animira naprej.
- Kliknite dvakrat hitro: s
springse pot ukrivi, stimingpoložaj ostane, začne pa se nova krivulja. - Ustavitev pusti vrednost, kjer je; nič ne skoči v končno stanje.
- Po odklopu, menjavi poti ali skritem zavihku ne ostanejo pozabljene zanke sličic.
Pripravljanje primera …
- Magnetna vrsticaIkone rastejo, ko gre kazalec mimo, odrinejo sosede in se umirijo, ko odide.
moveInputfollowuseAnimatedCSSmultiply - Kup kartic za potezanjePovlecite zgornjo kartico. Čez prag odleti; sicer se z vzmetjo vrne.
dragInputuseAnimatedListenerAnimated.div - Skupna galerijaPloščica zraste v podroben pogled in se skrči nazaj v mrežo.
Animated.SceneAnimated.Keepmove
Zgrajeno na Animated
Potrebujete pripravljeno komponento? Animated Chorus.
Vrteča se števila, poudarki kartic, ki potujejo, napredek, sheeti in animirani seznami, ki se neposredno vstavijo v React in React Native. Ti trije prav zdaj tečejo na tej strani.
Obiščite Animated ChorusZačnite v treh minutah
Namestite paket, premaknite prvo vrednost, nato pa izberite vodnik za nalogo pred vami.
npm install @kkwaenggwari/animated