गाइड · 03

Animated कंपोनेंट

सामान्य एलिमेंट रेंडर करें जो लक्ष्य की ओर बढ़ें, जेस्चर का जवाब दें और सलीक़े से जाएँ।

Animated.<tag>

Animated.div, Animated.button, Animated.svg और हर दूसरा HTML या SVG टैग बिना रैपर के सामान्य एलिमेंट रेंडर करता है। उनका style मान स्वीकार करता है, और transform React Native की तरह ऐरे हो सकते हैं।

इन एलिमेंट पर transform और opacity की सीमित गति, स्प्रिंग सहित, ब्राउज़र चला सकता है।

उदाहरण तैयार हो रहा है…

seed, pose, poses और tempo

seed पहला फ़्रेम है, pose मौजूदा लक्ष्य (ऑब्जेक्ट या poses की किसी प्रविष्टि का नाम), और tempo timing या स्प्रिंग। सिर्फ़ tempo बदलने से बिना बदला लक्ष्य दोबारा नहीं चलता।

एलिमेंट के पहुँचने पर onRest चलता है।

Card.jsx
<Animated.article
  seed={{ opacity: 0, transform: [{ translateY: 16 }] }}
  pose={selected ? 'raised' : 'rest'}
  poses={{
    rest: { opacity: 1, transform: [{ translateY: 0 }, { scale: 1 }] },
    raised: { opacity: 1, transform: [{ translateY: -8 }, { scale: 1.04 }] },
  }}
  tempo={{ spring: { stiffness: 300, damping: 26 } }}
  onRest={() => console.log('arrived')}
/>;

जेस्चर का जवाब

respond जेस्चर को अस्थायी लक्ष्यों से जोड़ता है: hover, focus, focusWithin, press, longPress, drag, inView और अन्य। जवाब ख़त्म होने पर एलिमेंट जहाँ भी हो, वहीं से अपने pose पर लौटता है।

onResponse हर जवाब की शुरुआत और अंत बताता है, और respond={{ press: {} }} बिना किसी दृश्य बदलाव के जेस्चर पर नज़र रखता है।

उदाहरण तैयार हो रहा है…

Animated.Scope से डिफ़ॉल्ट साझा करें

Animated.Scope अपने भीतर के Animated एलिमेंट को pose का नाम, tempo और एनिमेशन डिफ़ॉल्ट देता है।

Menu.jsx
<Animated.Scope tempo={{ spring: { stiffness: 380, damping: 30 } }}>
  <Animated.li pose={{ opacity: 1 }} />
  <Animated.li pose={{ opacity: 1 }} />
</Animated.Scope>;

अपने कंपोनेंट

Animated.wrap(Component) — React Native में createAnimatedComponent — ref आगे भेजने वाले और एक DOM एलिमेंट में हल होने वाले कंपोनेंट को वही props स्वीकार करने लायक बनाता है।

Link.jsx
import { forwardRef } from 'react';
import { Animated } from '@kkwaenggwari/animated';

const Link = forwardRef((props, ref) => <a ref={ref} {...props} />);
const AnimatedLink = Animated.wrap(Link);

<AnimatedLink href="/pricing" respond={{ hover: { transform: [{ translateX: 4 }] } }} />;

खोजें

दस्तावेज़ खोजने के लिए टाइप करें।