Przewodniki · 04

Wejście i gesty

Zapisuj do wartości wskaźnik, przeciąganie, przewijanie i inne wejścia, a inne wartości niech za nimi podążają.

input(target, adapter)

Adapter wejścia zamienia zdarzenia przeglądarki na zapisy wartości. input(ref, adapter) podłącza go jako kontroler; zadeklarowany wewnątrz useAnimated jest usuwany przy odmontowaniu lub zmianie zależności.

Adaptery: dragInput, pinchInput, moveInput, scrollInput, wheelInput, viewportInput, mediaInput, longPressInput i swipeInput.

Przygotowywanie przykładu…

Przeciąganie z granicami i ruchem po puszczeniu

dragInput obsługuje przeciąganie wskaźnikiem i strzałkami, bounds z oporem elastic, momentum po puszczeniu oraz funkcję settle, która wybiera miejsce spoczynku z przewidywanej pozycji.

Na ekranach dotykowych ustawia touch-action celu, gdy jest zamontowany, żeby przeglądarka nie uznała gestu za przewijanie. Wartość ustawiona przez ciebie ma pierwszeństwo.

Przygotowywanie przykładu…

Szczypanie, obszar widoku i media

Opcjonalny trzeci argument input dostaje każde zdarzenie reakcji, więc adapter może też uruchamiać ruch na swoich krawędziach.

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

Mapowania zdarzeń React Native działają na zdarzeniach DOM. W zdarzeniu przewijania nativeEvent.contentOffset, contentSize i layoutMeasurement są odczytywane z przewijanego elementu, więc mapowania ScrollView przenoszą się bez zmian.

Header.jsx
const scrollY = useAnimatedValue(0);

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

Szukaj

Zacznij pisać, aby przeszukać dokumentację.