מדריכים · 04
קלט ומחוות
כתבו לערכים סמן, גרירה, גלילה וקלט אחר, ותנו לערכים אחרים לעקוב אחריהם.
input(target, adapter)
מתאם קלט הופך אירועי דפדפן לכתיבות של ערכים. input(ref, adapter) מחבר אותו כבקר; אם הוצהר בתוך useAnimated, הוא מוסר בהסרה או כשתלות משתנה.
מתאמים: dragInput, pinchInput, moveInput, scrollInput, wheelInput, viewportInput, mediaInput, longPressInput ו־swipeInput.
מכין את הדוגמה…
גרירה עם גבולות ותנועה אחרי שחרור
dragInput תומך בגרירה עם סמן ועם מקשי חצים, bounds עם התנגדות elastic, momentum אחרי השחרור ופונקציית settle שבוחרת את מקום המנוחה לפי המיקום החזוי.
במסכי מגע הוא מגדיר את touch-action של היעד כל עוד הוא מורכב, כדי שהדפדפן לא יפרש את המחווה כגלילה. ערך שהגדרתם בעצמכם קודם.
מכין את הדוגמה…
צביטה, אזור התצוגה ומדיה
הארגומנט השלישי האופציונלי של 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 } } }])} />;