Geststyrda animationer med use-gesture
Kombinera react-spring med @use-gesture/react för att bygga drag-, nyp- och rullningsstyrda animationer.
Geststyrda animationer med use-gesture är en gratis lektion i React Academy på CoddyKit. Detta är lektion 4 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för React Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i React Academy innehåller totalt 4 lektioner.
Översikt över @use-gesture/react
@use-gesture/react är ett bibliotek för gestigenkänning som är utformat för att fungera sömlöst med react-spring. Det känner igen gesterna drag, pinch, scroll, hover, move och wheel, och tillhandahåller ett normaliserat gesttillstånd som kan kopplas direkt till spring-setters för följsamma, fysikbaserade interaktioner.
useDrag-gestens tillstånd
Hooken useDrag utlöser en callback vid varje draghändelse. Callbacken tar emot ett gesttillståndsobjekt med följande nyckelegenskaper: movement (den totala förflyttningen från dragningens början), velocity (den aktuella hastigheten), direction (1 eller -1 per axel), first (true när dragningen börjar), last (true när dragningen slutar) och event (den råa DOM-händelsen).
Funktionen bind()
Alla use-gesture-hookar returnerar en bind()-funktion. När bind() anropas returneras ett objekt med props för händelsehanterare (onPointerDown, onTouchStart med flera) som sprids över det element som ska göras interaktivt. Detta är kopplingspunkten mellan gesttolken och DOM-elementet.
Kombinera useDrag med react-spring
Standardmönstret är att skapa en spring med det imperativa API:et ([springs, api] = useSpring(...)) och sedan använda useDrag för att anropa api.start({ x: movement[0], y: movement[1] }) vid varje draghändelse. Spring-animationen följer dragförflyttningen mjukt och ger en naturlig fysikbaserad känsla åt det som annars skulle vara stel pekarspårning.
Studsa tillbaka vid släpp
När en dragning avslutas (last: true i gesttillståndet) återställer man vanligtvis elementet till dess ursprungliga position. Anropa api.start({ x: 0, y: 0 }) inuti en kontroll med if (last). react-spring animerar återgången med springfysik – en mjuk studs i stället för en omedelbar återställning – vilket ger interaktionen en tillfredsställande fysisk känsla.
Kasta och slunga med velocity
Värdet velocity i gesttillståndet möjliggör kastbeteenden. När användaren släpper med hög hastighet kan elementet slungas i dragriktningen i stället för att studsa tillbaka. Kontrollera if (last && velocity[0] > threshold) och animera sedan elementet till dess slutliga position utanför skärmen. Detta är viktigt för interaktioner av typen svep-för-att-stänga.
Draggränser och clampning
För att begränsa dragförflyttningen inom en behållare kan movement-värdena clampas innan de skickas till spring: x: Math.max(-maxX, Math.min(maxX, movement[0])). Alternativt kan det inbyggda alternativet bounds i use-gesture användas: useDrag(handler, { bounds: { left: -100, right: 100 } }) för att automatiskt clampa gesttillståndet.
Mönstret svep-för-att-stänga
En mobil implementering av svep-för-att-stänga: använd useDrag för att spåra horisontell förflyttning. Om användaren släpper med en velocity över en tröskel ELLER har förflyttat sig mer än halva skärmbredden, animeras kortet utanför skärmen (api.start({ x: window.innerWidth })) och tas sedan bort från listan. Annars återställs det till mitten.
usePinch för zoominteraktioner
usePinch känner igen tvåfingersgester på pekskärmar samt Ctrl+wheel på datorer. Gesttillståndet innehåller scale (den aktuella zoomnivån relativt gestens början) och origin (gestens mittpunkt). Koppla till en spring som följer scale för att skapa mjuka, begränsade zoominteraktioner i bilder eller kartor.
useHover och useMove
useHover utlöses när pekaren går in i eller lämnar ett element och tillhandahåller en boolesk active-egenskap. useMove spårar musens position inom ett element och tillhandahåller normaliserade koordinater. Båda är användbara för magnetiska hover-effekter där element förskjuts subtilt mot pekaren när den närmar sig.
Kombinera flera gester
use-gesture-hookar kan kombineras. Du kan använda både useDrag och usePinch på samma element: const bindDrag = useDrag(...); const bindPinch = usePinch(...) och sedan sprida båda bind-funktionerna: ...bindDrag() ...bindPinch(). use-gesture skiljer automatiskt mellan olika gesttyper.
Syftet med funktionen bind()
Vad gör funktionen bind() som returneras av use-gesture-hookar?
Lektionssammanfattning: integrering med use-gesture
@use-gesture/react tillhandahåller useDrag, usePinch, useScroll, useHover och useMove. Varje hook returnerar en bind()-funktion vars spridda resultat kopplar gesthändelser till DOM-element. Gesttillståndet tillhandahåller movement, velocity, direction, first och last. Kombinera detta med react-springs imperativa api.start() för interaktiva animationer baserade på fysik. Använd velocity för kast och avvisning samt bounds för att clampa förflyttningen.
Lär dig React med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 88
- Lektioner
- 324
Vanliga frågor
Är lektionen ”Geststyrda animationer med use-gesture” gratis?
Ja – hela texten till ”Geststyrda animationer med use-gesture” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i React Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i React Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Geststyrda animationer med use-gesture”?
Kombinera react-spring med @use-gesture/react för att bygga drag-, nyp- och rullningsstyrda animationer. Ni övar på React Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig React Academy?
Du behöver inga förkunskaper. Utbildningen i React Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.
Hur lång tid tar lektionen ”Geststyrda animationer med use-gesture”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här React Academy-lektionen?
Ja. Varje React Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- React Spring-grunder: useSpring-hooken
- Animerade komponenter och stilinterpolation
- useTrail och useChain för sekvenser
- Geststyrda animationer med use-gesture