الأدلة · 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 } } }])} />;