Guide · 04

Input e gesti

Scrivi nei valori puntatore, trascinamento, scroll e altri input, e lascia che altri valori li seguano.

input(target, adapter)

Un adattatore di input trasforma gli eventi del browser in scritture di valori. input(ref, adapter) lo collega come controller; dichiarato dentro useAnimated, viene rimosso allo smontaggio o quando cambia una dipendenza.

Adattatori: dragInput, pinchInput, moveInput, scrollInput, wheelInput, viewportInput, mediaInput, longPressInput e swipeInput.

Preparazione dell’esempio…

Trascinamento con limiti e movimento al rilascio

dragInput supporta il trascinamento con il puntatore e con i tasti freccia, bounds con resistenza elastic, momentum dopo il rilascio e una funzione settle che sceglie il punto di arrivo dalla posizione proiettata.

Sugli schermi touch imposta il touch-action del target mentre è montato, così il browser non scambia il gesto per uno scroll. Un valore impostato da te ha la precedenza.

Preparazione dell’esempio…

Pinch, viewport e media

Il terzo argomento facoltativo di input riceve ogni evento di risposta, quindi un adattatore può anche avviare un movimento ai suoi estremi.

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

Le mappature di eventi di React Native funzionano sugli eventi DOM. In un evento di scroll, nativeEvent.contentOffset, contentSize e layoutMeasurement vengono letti dall’elemento che scorre, quindi le mappature di ScrollView si portano senza modifiche.

Header.jsx
const scrollY = useAnimatedValue(0);

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

Cerca

Scrivi per cercare nella documentazione.