คู่มือ · 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 จะได้รับทุกเหตุการณ์การตอบสนอง อะแดปเตอร์จึงเริ่มการเคลื่อนไหวที่ขอบของมันได้ด้วย

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 } } }])} />;

ค้นหา

พิมพ์เพื่อค้นหาเอกสาร