Guider · 04

Inndata og bevegelser

Skriv peker, dra, rulling og annen inndata til verdier, og la andre verdier følge dem.

input(target, adapter)

En inndataadapter gjør nettleserhendelser om til skrivinger av verdier. input(ref, adapter) kobler den til som en kontroller; deklarert inne i useAnimated fjernes den ved unmount eller når en avhengighet endres.

Adaptere: dragInput, pinchInput, moveInput, scrollInput, wheelInput, viewportInput, mediaInput, longPressInput og swipeInput.

Forbereder eksempelet …

Dra med grenser og bevegelse etter slipp

dragInput støtter dra med peker og piltaster, bounds med elastic-motstand, momentum etter slipp og en settle-funksjon som velger hvilestedet ut fra den forventede posisjonen.

På berøringsskjermer setter den touch-action på målet mens den er montert, så nettleseren ikke tar bevegelsen for rulling. En verdi du setter selv, vinner.

Forbereder eksempelet …

Klyp, viewport og medier

Det valgfrie tredje argumentet til input mottar hver svarhendelse, så en adapter også kan starte bevegelse ved kantene sine.

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

Hendelsesmappinger fra React Native fungerer på DOM-hendelser. Ved en rullehendelse leses nativeEvent.contentOffset, contentSize og layoutMeasurement fra elementet som rulles, så ScrollView-mappinger flyttes over uendret.

Header.jsx
const scrollY = useAnimatedValue(0);

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

Søk

Skriv for å søke i dokumentasjonen.