Посібники · 04

Введення й жести

Записуйте в значення вказівник, перетягування, прокручування й інше введення, і нехай інші значення йдуть за ними.

input(target, adapter)

Адаптер введення перетворює події браузера на записи значень. input(ref, adapter) підключає його як контролер; оголошений усередині useAnimated, він видаляється під час демонтування або зміни залежності.

Адаптери: dragInput, pinchInput, moveInput, scrollInput, wheelInput, viewportInput, mediaInput, longPressInput і swipeInput.

Підготовка прикладу…

Перетягування з межами й рухом після відпускання

dragInput підтримує перетягування вказівником і клавішами-стрілками, bounds з опором elastic, momentum після відпускання й функцію settle, яка вибирає місце зупинки за прогнозованою позицією.

На сенсорних екранах він задає touch-action цілі, поки змонтований, щоб браузер не сприйняв жест як прокручування. Значення, задане вами, має пріоритет.

Підготовка прикладу…

Щипок, область перегляду й медіа

Необов’язковий третій аргумент input отримує кожну подію відповіді, тож адаптер може запускати рух і на своїх межах.

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

Зіставлення подій React Native працюють із подіями DOM. У події прокручування nativeEvent.contentOffset, contentSize і layoutMeasurement читаються з прокручуваного елемента, тож зіставлення ScrollView переносяться без змін.

Header.jsx
const scrollY = useAnimatedValue(0);

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

Пошук

Почніть вводити, щоб шукати в документації.