الحركة في React DOM · واجهة Animated API من React Native

اكتب الحركة مرة واحدة. تجري بسلاسة ولا تنكسر أبدًا.

يجلب Animated مكتبة Animated من React Native إلى الويب. قيمة واحدة تحرّك أي عدد من العناصر من دون عرض React في كل إطار، والحركة المدعومة يشغّلها المتصفح نفسه، وكل مقاطعة تكمل مما على الشاشة.

التثبيت
npm install @kkwaenggwari/animated

قيمة ساعة واحدة تقود تموّج الأشكال الأربعة والستين كلها. حرّك المؤشر فوق المسرح.

مقيس على هذا الإصدار

قيس بإصدار البناء 1.0.0 في Chrome من دون واجهة على PC مكتبي. تختلف الأرقام حسب الجهاز. كيف قسنا

  • 0.00msJavaScript لكل إطار أثناء حركة 400 عنصر

    الحركة المحدودة لـ transform وopacity على عناصر Animated يشغّلها المتصفح. لا تؤدي استدعاءات الإطارات في الصفحة أي عمل.

  • 0.13msJavaScript لكل إطار حين تقود قيمة واحدة 10,000 عنصر

    تكتب القيمة متغيّر CSS واحدًا؛ ويشتق كل عنصر نمطه منه عبر CSS.

  • 0عمليات عرض React أثناء الحركة

    لا تمر القيم أبدًا عبر حالة React. تُعرض المكوّنات حين تتغيّر props الخاصة بك، لا حين يتغيّر إطار.

01 · سهل

الـ API التي تعرفها، على style العادي في React

تحتفظ timing وspring وinterpolate وloop وAnimated.event بأسماء React Native وإعداداتها. تدخل القيمة مباشرة في الخاصية style العادية، فلا يوجد مكوّن خاص تتعلمه قبل أول حركة.

  • انقل شيفرة React Native بإعادة تسمية Animated.View إلى Animated.div.
  • قيمة واحدة يمكنها تحريك شريط ومؤشر دائري وصف من البطاقات معًا، لكلٍّ منها نطاقه.
  • يمتلك useAnimated الوصفة: يبدأ عند التركيب، ويعيد البدء حين تتغيّر تبعية، وينظّف عند الإزالة.

جارٍ تجهيز المثال…

الاستدعاءات نفسها كما في React Native

Spinner.jsx
// React Native
<Animated.View style={{ transform: [{ rotate }] }} />

// React DOM with @kkwaenggwari/animated — the rest is identical
<Animated.div style={{ transform: [{ rotate }] }} />

const spin = useAnimatedValue(0);
const rotate = spin.interpolate({ inputRange: [0, 1], outputRange: ['0deg', '360deg'] });

Animated.loop(
  Animated.timing(spin, { toValue: 1, duration: 900, easing: Easing.linear, useNativeDriver: true }),
).start();

02 · سريع

لا عرض React في كل إطار

قيمة الخطّاف متغيّر CSS. تصبح الاستيفاءات الخطية والعمليات الحسابية تعبيرات calc() دقيقة لذلك المتغيّر، فيكون كل إطار كتابة واحدة ويشتق المتصفح الباقي. والحركة المحدودة لـ transform وopacity على عناصر Animated.<tag> يشغّلها المتصفح من دون استدعاءات إطارات.

  • غيّر عدد النقاط: يُظهر العدّاد أن React عرض مرة واحدة لكل تغيير، لا لكل إطار.
  • يكتب scope القيمة مرة واحدة على حاوية بدل كل عنصر.
  • يخبرك inspect(element) بالمسار الذي تستخدمه كل خاصية ولماذا.

جارٍ تجهيز المثال…

03 · مستقر

قاطعه في أي مكان. يكمل طريقه.

يبدأ الهدف الجديد من حيث يقع العنصر على الشاشة، ويحتفظ النابض أيضًا بسرعته، فيكون الالتفاف في منتصف الطريق سلسًا بدل أن يتوقف أولًا. والمتحكمات المعرّفة في خطّاف تتوقف وتُحرَّر عند الاستبدال والإزالة، وتواصل العلامات المعروضة على الخادم حركتها بعد الإماهة.

  • انقر مرتين بسرعة: مع spring ينحني المسار، ومع timing يحتفظ بالموضع لكن يبدأ منحنى جديدًا.
  • الإيقاف يترك القيمة في مكانها؛ لا شيء يقفز إلى حالة نهائية.
  • لا حلقات إطارات منسية بعد الإزالة أو تغيير المسار أو إخفاء علامة التبويب.

جارٍ تجهيز المثال…

مبني على Animated

تحتاج إلى مكوّن جاهز؟ Animated Chorus.

أرقام تتدحرج، وتمييز علامات تبويب ينتقل، وتقدّم، ولوحات، وقوائم متحركة تندمج مباشرة في React وReact Native. هذه الثلاثة تعمل في هذه الصفحة الآن.

زُر Animated Chorus

بحث

اكتب للبحث في التوثيق.