Guider · 04
Inndata og bevegelser
Skriv peker, dra, rulling og annen inndata til verdier, og la andre verdier følge dem.
input(target, adapter)
En inndataadapter gjør nettleserhendelser om til skrivinger av verdier. input(ref, adapter) kobler den til som en kontroller; deklarert inne i useAnimated fjernes den ved unmount eller når en avhengighet endres.
Adaptere: dragInput, pinchInput, moveInput, scrollInput, wheelInput, viewportInput, mediaInput, longPressInput og swipeInput.
Forbereder eksempelet …
Dra med grenser og bevegelse etter slipp
dragInput støtter dra med peker og piltaster, bounds med elastic-motstand, momentum etter slipp og en settle-funksjon som velger hvilestedet ut fra den forventede posisjonen.
På berøringsskjermer setter den touch-action på målet mens den er montert, så nettleseren ikke tar bevegelsen for rulling. En verdi du setter selv, vinner.
Forbereder eksempelet …
Klyp, viewport og medier
Det valgfrie tredje argumentet til input mottar hver svarhendelse, så en adapter også kan starte bevegelse ved kantene sine.
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
Hendelsesmappinger fra React Native fungerer på DOM-hendelser. Ved en rullehendelse leses nativeEvent.contentOffset, contentSize og layoutMeasurement fra elementet som rulles, så ScrollView-mappinger flyttes over uendret.
const scrollY = useAnimatedValue(0);
<div onScroll={Animated.event([{ nativeEvent: { contentOffset: { y: scrollY } } }])} />;