Gestengesteuerte Animationen mit use-gesture
react-spring mit @use-gesture/react kombinieren, um zieh-, pinch- und scrollgesteuerte Animationen zu erstellen
Gestengesteuerte Animationen mit use-gesture ist eine kostenlose React Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des React Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.
@use-gesture/react – Übersicht
@use-gesture/react ist eine Bibliothek zur Gestenerkennung, die für die nahtlose Zusammenarbeit mit react-spring entwickelt wurde. Sie erkennt Gesten wie Drag, Pinch, Scroll, Hover, Move und Wheel und stellt einen normalisierten Gestenstatus bereit, den Sie direkt an Spring-Setter weitergeben können, um flüssige, physikbasierte Interaktionen zu erzeugen.
Gestenstatus von useDrag
Der useDrag-Hook ruft bei jedem Drag-Ereignis einen Callback auf. Der Callback erhält ein Gestenstatusobjekt mit wichtigen Eigenschaften: movement (gesamte Verschiebung seit Beginn des Drags), velocity (aktuelle Geschwindigkeit), direction (1 oder -1 pro Achse), first (beim Start des Drags true), last (beim Ende des Drags true) und event (das unverarbeitete DOM-Ereignis).
Die Funktion bind()
Alle use-gesture-Hooks geben eine bind()-Funktion zurück. Der Aufruf von bind() gibt ein Objekt mit Props für Event-Handler zurück (onPointerDown, onTouchStart usw.), die Sie per Spread-Syntax auf das Element anwenden, das interaktiv werden soll. Dies ist die Verbindungsstelle zwischen der Gestenerkennung und Ihrem DOM-Element.
useDrag mit react-spring kombinieren
Das Standardmuster: Erstellen Sie einen Spring mit der imperativen API ([springs, api] = useSpring(...)) und verwenden Sie anschließend useDrag, um bei jedem Drag-Ereignis api.start({ x: movement[0], y: movement[1] }) aufzurufen. Der Spring folgt der Bewegung gleichmäßig und verleiht dem ansonsten starren Verfolgen des Cursors eine natürliche Physik.
Beim Loslassen zurückschnappen
Wenn ein Drag endet (last: true im Gestenstatus), lassen Sie das Element normalerweise zu seinem Ausgangspunkt zurückschnappen. Rufen Sie innerhalb einer if (last)-Prüfung api.start({ x: 0, y: 0 }) auf. react-spring animiert die Rückkehr mit Federphysik – mit einem sanften Abprallen statt einer sofortigen Zurücksetzung. Dadurch fühlt sich die Interaktion angenehm physisch an.
Werfen und Schleudern mit Geschwindigkeit
Der Wert velocity im Gestenstatus ermöglicht ein Wurfverhalten. Wenn der Benutzer das Element mit hoher Geschwindigkeit loslässt, können Sie es in Drag-Richtung schleudern, statt es zurückschnappen zu lassen. Prüfen Sie if (last && velocity[0] > threshold) und animieren Sie das Element anschließend zu seiner endgültigen Position außerhalb des Bildschirms. Das ist entscheidend für Interaktionen zum Wegwischen und Schließen.
Ziehgrenzen und Begrenzung
Um die Drag-Bewegung auf einen Container zu beschränken, begrenzen Sie die Bewegungswerte, bevor Sie sie an den Spring übergeben: x: Math.max(-maxX, Math.min(maxX, movement[0])). Alternativ können Sie die integrierte Option bounds von use-gesture verwenden: useDrag(handler, { bounds: { left: -100, right: 100 } }). Dadurch wird der Gestenstatus automatisch begrenzt.
Muster zum Wegwischen und Schließen
Eine mobile Implementierung zum Wegwischen und Schließen: Verwenden Sie useDrag, um die horizontale Bewegung zu verfolgen. Wenn der Benutzer das Element mit einer Geschwindigkeit oberhalb eines Schwellenwerts loslässt ODER es um mehr als die halbe Bildschirmbreite bewegt hat, animieren Sie die Karte aus dem sichtbaren Bereich (api.start({ x: window.innerWidth })) und entfernen sie anschließend aus der Liste. Andernfalls lassen Sie sie zur Mitte zurückschnappen.
usePinch für Zoom-Interaktionen
usePinch erkennt Pinch-Gesten mit zwei Fingern auf Touchscreens sowie Ctrl+wheel auf dem Desktop. Der Gestenstatus enthält scale (die aktuelle Zoomstufe relativ zum Beginn der Pinch-Geste) und origin (den Mittelpunkt der Pinch-Geste). Verbinden Sie den Hook mit einem Spring, der die Skalierung verfolgt, um gleichmäßige, begrenzte Zoom-Interaktionen für Bilder oder Karten zu erzeugen.
useHover und useMove
useHover wird ausgelöst, wenn der Zeiger ein Element betritt oder verlässt, und stellt einen booleschen Wert active bereit. useMove verfolgt die Mausposition innerhalb eines Elements und stellt normalisierte Koordinaten bereit. Beide Hooks eignen sich für magnetische Hover-Effekte, bei denen sich Elemente subtil zum Cursor bewegen, sobald er sich nähert.
Mehrere Gesten kombinieren
use-gesture-Hooks lassen sich kombinieren. Sie können useDrag und usePinch auf demselben Element verwenden: const bindDrag = useDrag(...); const bindPinch = usePinch(...). Wenden Sie anschließend beide Bind-Funktionen per Spread-Syntax an: ...bindDrag() ...bindPinch(). use-gesture unterscheidet automatisch zwischen den verschiedenen Gestentypen.
Zweck der Funktion bind()
Was bewirkt die von use-gesture-Hooks zurückgegebene Funktion bind()?
Lektionsrückblick: use-gesture-Integration
@use-gesture/react stellt useDrag, usePinch, useScroll, useHover und useMove bereit. Jeder Hook gibt eine bind()-Funktion zurück, deren Spread-Ergebnis Gestenereignisse mit DOM-Elementen verbindet. Der Gestenstatus stellt movement, velocity, direction, first und last bereit. Kombinieren Sie diese Werte mit dem imperativen api.start() von react-spring, um interaktive Animationen auf Grundlage von Physik zu erstellen. Verwenden Sie velocity für Wurf- und Schließaktionen und bounds zum Begrenzen der Bewegung.
Häufig gestellte Fragen
Ist die Lektion „Gestengesteuerte Animationen mit use-gesture“ kostenlos?
Ja — der vollständige Text von „Gestengesteuerte Animationen mit use-gesture“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des React Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Gestengesteuerte Animationen mit use-gesture“?
react-spring mit @use-gesture/react kombinieren, um zieh-, pinch- und scrollgesteuerte Animationen zu erstellen Du übst React Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um React Academy zu starten?
Keine Vorkenntnisse erforderlich. React Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Gestengesteuerte Animationen mit use-gesture“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser React Academy-Lektion Code schreiben und ausführen?
Ja. Jede React Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- React Spring: useSpring-Hook
- Animierte Komponenten und Style-Interpolation
- useTrail und useChain für Sequenzen
- Gestengesteuerte Animationen mit use-gesture