Guides · 04

Eingaben und Gesten

Zeiger, Ziehen, Scrollen und andere Eingaben in Werte schreiben und andere Werte ihnen folgen lassen.

input(target, adapter)

Ein Eingabe-Adapter macht aus Browser-Events Schreibvorgänge auf Werte. input(ref, adapter) hängt ihn als Controller an; in useAnimated deklariert, wird er beim Unmount oder bei Änderung einer Abhängigkeit entfernt.

Adapter: dragInput, pinchInput, moveInput, scrollInput, wheelInput, viewportInput, mediaInput, longPressInput und swipeInput.

Beispiel wird vorbereitet…

Ziehen mit Grenzen und Bewegung beim Loslassen

dragInput unterstützt Ziehen per Zeiger und Pfeiltasten, bounds mit elastic-Widerstand, momentum nach dem Loslassen und eine settle-Funktion, die die Ruheposition aus der hochgerechneten Position wählt.

Auf Touchscreens setzt es während des Mounts touch-action auf dem Ziel, damit der Browser die Geste nicht als Scrollen übernimmt. Ein Wert, den du selbst setzt, hat Vorrang.

Beispiel wird vorbereitet…

Pinch, Viewport und Media Queries

Das optionale dritte Argument von input erhält jedes Reaktions-Event, ein Adapter kann also auch an seinen Flanken Bewegung starten.

inputs.jsx
const card = useRef(null);

const pinch = useAnimated(
  { scale: 1, rotation: 0 },
  (value) => {
    input(card, pinchInput({ scale: value.scale, rotation: value.rotation, minScale: 0.5 }));
  },
  [],
);

const reveal = useAnimated(
  0,
  (value) => {
    input(card, viewportInput({ once: true }), (event) => {
      if (event.phase === 'in') spring(value, { toValue: 1 }).start();
    });
  },
  [],
);

Animated.event

Event-Mappings aus React Native funktionieren mit DOM-Events. Bei einem Scroll-Event werden nativeEvent.contentOffset, contentSize und layoutMeasurement vom gescrollten Element gelesen, sodass ScrollView-Mappings unverändert portiert werden können.

Header.jsx
const scrollY = useAnimatedValue(0);

<div onScroll={Animated.event([{ nativeEvent: { contentOffset: { y: scrollY } } }])} />;

Suchen

Tippe, um die Dokumentation zu durchsuchen.