Ghiduri · 04
Intrare și gesturi
Scrieți cursorul, tragerea, derularea și alte intrări în valori și lăsați alte valori să le urmeze.
input(target, adapter)
Un adaptor de intrare transformă evenimentele browserului în scrieri de valori. input(ref, adapter) îl atașează ca controler; declarat în useAnimated, este eliminat la demontare sau când se schimbă o dependență.
Adaptoare: dragInput, pinchInput, moveInput, scrollInput, wheelInput, viewportInput, mediaInput, longPressInput și swipeInput.
Se pregătește exemplul…
Tragere cu limite și mișcare la eliberare
dragInput suportă tragerea cu cursorul și cu tastele săgeți, bounds cu rezistență elastic, momentum după eliberare și o funcție settle care alege locul de oprire din poziția proiectată.
Pe ecranele tactile setează touch-action pe țintă cât e montat, ca browserul să nu preia gestul drept derulare. O valoare setată de dumneavoastră are prioritate.
Se pregătește exemplul…
Ciupire, viewport și media
Al treilea argument opțional al lui input primește fiecare eveniment de răspuns, așa că un adaptor poate porni mișcare și la marginile sale.
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
Mapările de evenimente din React Native funcționează pe evenimente DOM. La un eveniment de derulare, nativeEvent.contentOffset, contentSize și layoutMeasurement se citesc din elementul derulat, așa că mapările ScrollView se preiau neschimbate.
const scrollY = useAnimatedValue(0);
<div onScroll={Animated.event([{ nativeEvent: { contentOffset: { y: scrollY } } }])} />;