गाइड · 04
इनपुट और जेस्चर
पॉइंटर, खींचना, स्क्रॉल और दूसरे इनपुट मानों में लिखें, और दूसरे मानों को उनके पीछे चलने दें।
input(target, adapter)
इनपुट एडेप्टर ब्राउज़र इवेंट को मान के लेखन में बदलता है। input(ref, adapter) उसे कंट्रोलर के रूप में जोड़ता है; useAnimated के भीतर घोषित होने पर वह अनमाउंट पर या निर्भरता बदलने पर हट जाता है।
एडेप्टर: dragInput, pinchInput, moveInput, scrollInput, wheelInput, viewportInput, mediaInput, longPressInput और swipeInput।
उदाहरण तैयार हो रहा है…
सीमाओं और छोड़ने के बाद की गति के साथ खींचना
dragInput पॉइंटर और ऐरो कीज़ से खींचना, elastic प्रतिरोध वाली bounds, छोड़ने के बाद momentum और एक settle फ़ंक्शन समर्थित करता है जो अनुमानित स्थिति से ठहरने की जगह चुनता है।
टच स्क्रीन पर माउंट रहते हुए यह लक्ष्य का touch-action सेट करता है, ताकि ब्राउज़र जेस्चर को स्क्रॉल न समझे। आपका ख़ुद सेट किया मान प्राथमिकता पाता है।
उदाहरण तैयार हो रहा है…
पिंच, व्यूपोर्ट और मीडिया
input का वैकल्पिक तीसरा आर्ग्युमेंट हर response इवेंट पाता है, इसलिए एडेप्टर अपने किनारों पर गति भी शुरू कर सकता है।
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 मैपिंग बिना बदलाव के आ जाती हैं।
const scrollY = useAnimatedValue(0);
<div onScroll={Animated.event([{ nativeEvent: { contentOffset: { y: scrollY } } }])} />;