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.

Inštalácia
npm install @kkwaenggwari/animated

Jediná 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.View na Animated.div.
  • Jedna hodnota môže naraz hýbať pruhom, ciferníkom aj radom kariet, každým v jeho vlastnom rozsahu.
  • useAnimated vlastní 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

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 · 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.
  • scope zapíš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 spring sa dráha ohne, s timing sa 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…

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 Chorus

Zač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

Hľadať

Píšte a hľadajte v dokumentácii.