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.

Namestitev
npm install @kkwaenggwari/animated

Ena 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.View preimenujete v Animated.div.
  • Ena vrednost lahko hkrati premika trak, številčnico in vrsto kartic, vsako z lastnim razponom.
  • useAnimated ima 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

Spinner.jsx
// 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.
  • scope zapiš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 spring se pot ukrivi, s timing polož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 …

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 Chorus

Začnite v treh minutah

Namestite paket, premaknite prvo vrednost, nato pa izberite vodnik za nalogo pred vami.

npm install @kkwaenggwari/animated

Iskanje

Tipkajte za iskanje po dokumentaciji.