Panduan · 04

Input dan gestur

Tulis pointer, seret, gulir, dan input lain ke dalam nilai, lalu biarkan nilai lain mengikutinya.

input(target, adapter)

Adaptor input mengubah event browser menjadi penulisan nilai. input(ref, adapter) memasangnya sebagai pengendali; bila dideklarasikan di dalam useAnimated, ia dilepas saat unmount atau saat dependensi berubah.

Adaptor: dragInput, pinchInput, moveInput, scrollInput, wheelInput, viewportInput, mediaInput, longPressInput, dan swipeInput.

Menyiapkan contoh…

Seret dengan batas dan gerak setelah dilepas

dragInput mendukung seret dengan pointer dan tombol panah, bounds dengan hambatan elastic, momentum setelah dilepas, dan fungsi settle yang memilih tempat berhenti dari posisi yang diproyeksikan.

Di layar sentuh, ia mengatur touch-action target selama terpasang agar browser tidak mengambil gestur itu sebagai gulir. Nilai yang Anda atur sendiri yang diutamakan.

Menyiapkan contoh…

Cubit, viewport, dan media

Argumen ketiga opsional dari input menerima setiap event respons, sehingga adaptor juga bisa memulai gerak di tepinya.

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

Pemetaan event dari React Native bekerja pada event DOM. Pada event gulir, nativeEvent.contentOffset, contentSize, dan layoutMeasurement dibaca dari elemen yang digulir, jadi pemetaan ScrollView terbawa tanpa perubahan.

Header.jsx
const scrollY = useAnimatedValue(0);

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

Cari

Ketik untuk mencari dokumentasi.