Guider · 04

Inmatning och gester

Skriv pekare, dragning, scrollning och annan inmatning till värden, och låt andra värden följa dem.

input(target, adapter)

En inmatningsadapter gör om webbläsarhändelser till skrivningar av värden. input(ref, adapter) kopplar in den som en controller; deklarerad inuti useAnimated tas den bort vid unmount eller när ett beroende ändras.

Adaptrar: dragInput, pinchInput, moveInput, scrollInput, wheelInput, viewportInput, mediaInput, longPressInput och swipeInput.

Förbereder exemplet…

Dra med gränser och rörelse efter släpp

dragInput stöder dragning med pekare och piltangenter, bounds med elastic-motstånd, momentum efter släpp och en settle-funktion som väljer viloplatsen utifrån den förväntade positionen.

På pekskärmar sätter den målets touch-action medan den är monterad, så att webbläsaren inte tar gesten för scrollning. Ett värde du själv sätter vinner.

Förbereder exemplet…

Nyp, viewport och media

Det valfria tredje argumentet till input tar emot varje svarshändelse, så en adapter kan också starta rörelse vid sina kanter.

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

Händelsemappningar från React Native fungerar på DOM-händelser. Vid en scrollhändelse läses nativeEvent.contentOffset, contentSize och layoutMeasurement från det scrollade elementet, så ScrollView-mappningar flyttas över oförändrade.

Header.jsx
const scrollY = useAnimatedValue(0);

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

Sök

Skriv för att söka i dokumentationen.