Bevægelse til React DOM · React Natives Animated API
Skriv bevægelse én gang. Den kører glat og går aldrig i stykker.
Animated bringer React Natives Animated til nettet. Én værdi styrer et vilkårligt antal elementer uden React-rendering pr. frame, understøttet bevægelse afspilles af browseren selv, og hver afbrydelse fortsætter fra det, der er på skærmen.
npm install @kkwaenggwari/animatedÉn urværdi styrer krusningen i alle 64 former. Bevæg markøren hen over scenen.
Målt på denne version
Målt med 1.0.0-buildet i headless Chrome på en stationær PC. Tallene varierer efter enhed. Sådan målte vi
- 0.00msJavaScript pr. frame, mens 400 elementer bevæger sig
Endelig transform- og opacity-bevægelse på Animated-elementer afspilles af browseren. Sidens egne frame-callbacks udfører intet arbejde.
- 0.13msJavaScript pr. frame, når én værdi styrer 10.000 elementer
Værdien skriver én CSS-variabel; hvert element afleder sin stil fra den i CSS.
- 0React-renderinger under bevægelse
Værdier går aldrig gennem React-state. Komponenter renderes, når dine props ændrer sig, ikke når en frame ændrer sig.
01 · Nemt
API'et, du allerede kender, på almindelig React-style
timing, spring, interpolate, loop og Animated.event beholder React Natives navne og konfigurationer. En værdi går direkte ind i en almindelig style-prop, så der er ingen særlig komponent at lære før din første bevægelse.
- Portér React Native-kode ved at omdøbe
Animated.ViewtilAnimated.div. - Én værdi kan bevæge en bjælke, en drejeknap og en række kort på én gang, hver med sit eget interval.
useAnimatedejer opskriften: den starter ved mount, genstarter, når en afhængighed ændrer sig, og rydder op ved unmount.
Forbereder eksemplet…
De samme kald som i React Native
// 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 · Hurtigt
Ingen React-rendering pr. frame
En hook-værdi er en CSS-variabel. Lineære interpolationer og aritmetik bliver eksakte calc()-udtryk af den variabel, så hver frame er én skrivning, og browseren afleder resten. Endelig transform- og opacity-bevægelse på Animated.<tag>-elementer afspilles af browseren uden frame-callbacks.
- Ændr antallet af prikker: tælleren viser, at React renderede én gang pr. ændring, aldrig pr. frame.
scopeskriver værdien én gang på en container i stedet for på hvert element.inspect(element)fortæller, hvilken vej hver egenskab bruger, og hvorfor.
Forbereder eksemplet…
03 · Stabilt
Afbryd den hvor som helst. Den fortsætter.
Et nyt mål starter, hvor elementet er på skærmen, og en fjeder bevarer også sin hastighed, så at vende midt i bevægelsen drejer blødt i stedet for først at stoppe. Controllere, der er erklæret i en hook, stoppes og frigives ved udskiftning og unmount, og serverrenderet markup bliver ved med at animere efter hydrering.
- Klik to gange hurtigt: med
springbøjer banen, medtimingbevares positionen, men en ny kurve begynder. - At stoppe lader værdien blive, hvor den er; intet hopper til en sluttilstand.
- Ingen efterladte frame-løkker efter unmount, ruteskift eller skjulte faner.
Forbereder eksemplet…
Det kan du bygge
Komplette mønstre med justerbare indstillinger og den fulde kildekode.
Alle eksempler- Magnetisk dockIkoner vokser, når markøren passerer, skubber naboerne til side og falder til ro, når den forlader.
moveInputfollowuseAnimatedCSSmultiply - SwipebunkeTræk det øverste kort. Forbi tærsklen flyver det væk; ellers fjedrer det tilbage.
dragInputuseAnimatedListenerAnimated.div - Delt galleriEn flise vokser til en detaljevisning og skrumper tilbage i gitteret.
Animated.SceneAnimated.Keepmove
Bygget på Animated
Brug for en færdig komponent? Animated Chorus.
Rullende tal, fanemarkeringer, der flytter sig, fremskridt, sheets og animerede lister, der passer direkte ind i React og React Native. Disse tre kører på siden lige nu.
Besøg Animated ChorusKom i gang på tre minutter
Installér pakken, flyt din første værdi, og vælg derefter en guide til den opgave, du står med.
npm install @kkwaenggwari/animated