Pohyb pro React DOM · API Animated z React Native

Napište pohyb jednou. Běží plynule a nikdy se nerozbije.

Animated přináší Animated z React Native na web. Jedna hodnota řídí libovolný počet prvků bez renderu Reactu v každém snímku, podporovaný pohyb přehrává sám prohlížeč a každé přerušení pokračuje od toho, co je na obrazovce.

Instalace
npm install @kkwaenggwari/animated

Jediná hodnota hodin řídí vlnění všech 64 tvarů. Přejeďte ukazatelem nad scénou.

Změřeno na tomto vydání

Změřeno sestavením 1.0.0 v Chrome bez rozhraní na stolním PC. Čísla se liší podle zařízení. Jak jsme měřili

  • 0.00msJavaScript na snímek, zatímco se pohybuje 400 prvků

    Konečný pohyb transform a opacity na prvcích Animated přehrává prohlížeč. Vlastní callbacky snímků stránky nedělají žádnou práci.

  • 0.13msJavaScript na snímek, když jedna hodnota řídí 10 000 prvků

    Hodnota zapisuje jednu proměnnou CSS; každý prvek si z ní v CSS odvodí svůj styl.

  • 0Rendery Reactu během pohybu

    Hodnoty nikdy neprocházejí stavem Reactu. Komponenty se renderují, když se změní vaše props, ne když se změní snímek.

01 · Snadné

API, které už znáte, na běžném style Reactu

timing, spring, interpolate, loop a Animated.event si zachovávají názvy a konfigurace z React Native. Hodnota jde přímo do běžné prop style, takže před prvním pohybem se nemusíte učit žádnou zvláštní komponentu.

  • Převeďte kód z React Native přejmenováním Animated.View na Animated.div.
  • Jedna hodnota může najednou hýbat pruhem, ciferníkem i řadou karet, každým v jeho vlastním rozsahu.
  • useAnimated vlastní recept: spustí se při připojení, znovu se spustí při změně závislosti a při odpojení po sobě uklidí.

Příprava příkladu…

Stejná volání jako 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 · Rychlé

Žádný render Reactu v každém snímku

Hodnota hooku je proměnná CSS. Lineární interpolace a aritmetika se stávají přesnými výrazy calc() této proměnné, takže každý snímek je jeden zápis a zbytek odvodí prohlížeč. Konečný pohyb transform a opacity na prvcích Animated.<tag> přehrává prohlížeč bez callbacků snímků.

  • Změňte počet teček: počítadlo ukazuje, že React renderoval jednou na změnu, nikdy na snímek.
  • scope zapíše hodnotu jednou na kontejner místo na každý prvek.
  • inspect(element) řekne, kterou cestu každá vlastnost používá a proč.

Příprava příkladu…

03 · Stabilní

Přerušte ho kdekoli. Pokračuje.

Nový cíl začne tam, kde je prvek na obrazovce, a pružina navíc zachová svou rychlost, takže obrat v půli cesty plynule zatočí, místo aby se nejdřív zastavil. Controllery deklarované v hooku se při nahrazení a odpojení zastaví a uvolní a markup vyrenderovaný na serveru se po hydrataci dál animuje.

  • Klikněte dvakrát rychle za sebou: se spring se dráha ohne, s timing se zachová poloha, ale začne nová křivka.
  • Zastavení nechá hodnotu tam, kde je; nic neskočí do koncového stavu.
  • Žádné zapomenuté smyčky snímků po odpojení, změně routy nebo skrytí karty.

Příprava příkladu…

Postaveno na Animated

Potřebujete hotovou komponentu? Animated Chorus.

Rolující čísla, putující zvýraznění karet, průběh, sheety a animované seznamy, které rovnou zapadnou do React i React Native. Tyto tři právě teď běží na této stránce.

Navštívit Animated Chorus

Začněte za tři minuty

Nainstalujte balíček, pohněte první hodnotou a pak si vyberte průvodce pro úlohu před vámi.

npm install @kkwaenggwari/animated

Hledat

Pište a hledejte v dokumentaci.