คู่มือ · 04
อินพุตและท่าทาง
เขียนตัวชี้ การลาก การเลื่อน และอินพุตอื่นลงในค่า แล้วให้ค่าอื่นตามไป
input(target, adapter)
อะแดปเตอร์อินพุตแปลงเหตุการณ์ของเบราว์เซอร์เป็นการเขียนค่า input(ref, adapter) ผูกมันเป็นตัวควบคุม หากประกาศใน useAnimated มันจะถูกนำออกเมื่อ unmount หรือเมื่อ dependency เปลี่ยน
อะแดปเตอร์: dragInput, pinchInput, moveInput, scrollInput, wheelInput, viewportInput, mediaInput, longPressInput และ swipeInput
กำลังเตรียมตัวอย่าง…
การลากพร้อมขอบเขตและการเคลื่อนไหวหลังปล่อย
dragInput รองรับการลากด้วยตัวชี้และปุ่มลูกศร bounds พร้อมแรงต้าน elastic การไหลต่อ momentum หลังปล่อย และฟังก์ชัน settle ที่เลือกจุดพักจากตำแหน่งที่คาดการณ์
บนหน้าจอสัมผัส มันจะตั้ง touch-action ของเป้าหมายขณะ mount อยู่ เพื่อไม่ให้เบราว์เซอร์ถือว่าท่าทางเป็นการเลื่อน ค่าที่คุณตั้งเองจะได้รับความสำคัญก่อน
กำลังเตรียมตัวอย่าง…
การหนีบ วิวพอร์ต และสื่อ
อาร์กิวเมนต์ที่สามซึ่งเป็นตัวเลือกของ input จะได้รับทุกเหตุการณ์การตอบสนอง อะแดปเตอร์จึงเริ่มการเคลื่อนไหวที่ขอบของมันได้ด้วย
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 } } }])} />;