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.

Instalacija
npm install @kkwaenggwari/animated

Jedna 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.View u Animated.div.
  • Jedna vrijednost može istodobno pomicati traku, brojčanik i red kartica, svaku s vlastitim rasponom.
  • useAnimated posjeduje 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

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 · 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.
  • scope zapisuje 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 spring putanja se savija, s timing polož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…

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 Chorus

Započnite za tri minute

Instalirajte paket, pomaknite prvu vrijednost, a zatim odaberite vodič za zadatak pred vama.

npm install @kkwaenggwari/animated

Pretraži

Tipkajte za pretraživanje dokumentacije.