Guides · 04

Input og gestus

Skriv markør, træk, scroll og andet input til værdier, og lad andre værdier følge dem.

input(target, adapter)

En inputadapter omsætter browser-events til skrivninger af værdier. input(ref, adapter) forbinder den som en controller; erklæret inde i useAnimated fjernes den ved unmount, eller når en afhængighed ændrer sig.

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

Forbereder eksemplet…

Træk med grænser og bevægelse efter slip

dragInput understøtter træk med markør og piletaster, bounds med elastic-modstand, momentum efter slip og en settle-funktion, der vælger hvilestedet ud fra den forventede position.

På touchskærme sætter den målets touch-action, mens den er monteret, så browseren ikke tager gestussen for scroll. En værdi, du selv sætter, vinder.

Forbereder eksemplet…

Knib, viewport og medier

Det valgfrie tredje argument til input modtager hver svar-event, så en adapter også kan starte bevægelse ved sine 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

Event-mappings fra React Native virker på DOM-events. Ved en scroll-event læses nativeEvent.contentOffset, contentSize og layoutMeasurement fra det scrollede element, så ScrollView-mappings overføres uændret.

Header.jsx
const scrollY = useAnimatedValue(0);

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

Søg

Skriv for at søge i dokumentationen.