Mozgás React DOM-hoz · a React Native Animated API-ja

Írja meg egyszer a mozgást. Simán fut, és soha nem törik el.

Az Animated a React Native Animatedet hozza el a webre. Egyetlen érték tetszőleges számú elemet vezérel képkockánkénti React-renderelés nélkül, a támogatott mozgást maga a böngésző játssza le, és minden megszakítás onnan folytatódik, ami a képernyőn van.

Telepítés
npm install @kkwaenggwari/animated

Egyetlen órajel-érték vezérli mind a 64 alakzat hullámait. Mozgassa a mutatót a színpad felett.

Erre a kiadásra mérve

Az 1.0.0 builddel mérve, fej nélküli Chrome-ban, asztali PC-n. A számok eszközfüggők. Hogyan mértünk

  • 0.00msKépkockánkénti JavaScript 400 elem mozgása közben

    Az Animated elemeken a véges transform- és opacity-mozgást a böngésző játssza le. Az oldal saját képkocka-callbackjei semmilyen munkát nem végeznek.

  • 0.13msKépkockánkénti JavaScript, amikor egy érték 10 000 elemet vezérel

    Az érték egyetlen CSS-változót ír; minden elem CSS-ben ebből számítja a saját stílusát.

  • 0React-renderelések mozgás közben

    Az értékek soha nem haladnak át a React-állapoton. A komponensek akkor renderelnek, ha a props-uk változik, nem akkor, ha a képkocka.

01 · Egyszerű

Az API, amelyet már ismer, sima React style-on

A timing, spring, interpolate, loop és Animated.event megtartja a React Native-beli nevét és konfigurációját. Az érték közvetlenül a sima style propba kerül, így az első mozgás előtt nem kell különleges komponenst megtanulni.

  • Hozza át a React Native-kódot úgy, hogy az Animated.View nevet Animated.div-re cseréli.
  • Egyetlen érték egyszerre mozgathat egy csíkot, egy számlapot és egy kártyasort, mindegyiket a saját tartományával.
  • A useAnimated birtokolja a receptet: csatoláskor indul, függőségváltozáskor újraindul, és leválasztáskor kitakarít.

A példa előkészítése…

Ugyanazok a hívások, mint React Native-ben

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 · Gyors

Nincs React-renderelés minden képkockában

Egy hook értéke CSS-változó. A lineáris interpolációk és az aritmetika ennek a változónak pontos calc() kifejezéseivé válnak, így minden képkocka egyetlen írás, a többit a böngésző számolja. Az Animated.<tag> elemeken a véges transform- és opacity-mozgást a böngésző képkocka-callbackek nélkül játssza le.

  • Módosítsa a pontok számát: a számláló mutatja, hogy a React változásonként egyszer renderelt, képkockánként soha.
  • A scope az értéket egyszer, a tárolóelemre írja minden elem helyett.
  • Az inspect(element) megmondja, melyik tulajdonság melyik utat használja, és miért.

A példa előkészítése…

03 · Stabil

Szakítsa meg bárhol. Folytatja.

Az új cél onnan indul, ahol az elem a képernyőn van, a rugó pedig a sebességet is megtartja, így a félúton történő visszafordulás simán ível, ahelyett hogy előbb megállna. A hookban deklarált vezérlők cserekor és leválasztáskor leállnak és felszabadulnak, a szerveren renderelt markup pedig hidratálás után is tovább animálódik.

  • Kattintson kétszer gyorsan: spring esetén a pálya elhajlik, timing esetén a pozíció megmarad, de új görbe indul.
  • A leállítás ott hagyja az értéket, ahol van; semmi nem ugrik a végállapotba.
  • Leválasztás, útvonalváltás vagy rejtett fül után nem marad elfelejtett képkockaciklus.

A példa előkészítése…

Animatedre építve

Kész komponensre van szüksége? Animated Chorus.

Pörgő számok, vándorló kártyakiemelések, haladásjelzők, sheetek és animált listák, amelyek közvetlenül beilleszthetők React és React Native alá. Ez a három éppen most fut ezen az oldalon.

Az Animated Chorus megtekintése

Kezdés három perc alatt

Telepítse a csomagot, mozgasson meg egy első értéket, majd válasszon útmutatót az előtte álló feladathoz.

npm install @kkwaenggwari/animated

Keresés

Gépeljen a dokumentációban való kereséshez.