0Pricing
React Academy · درس

تحريكات الدخول والخروج دون مكتبة

نفّذ تحريكات التركيب وإلغاء التركيب في React عبر التحكم يدويًا في توقيتَي display وopacity.

تحريكات الدخول والخروج دون مكتبة درس مجاني في React Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في React Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة React Academy 4 دروس في المجموع.

مشكلة إزالة التركيب

عند العرض بشكل مشروط باستخدام {show && }، يزيل React العنصر من DOM فور أن تصبح قيمة show هي false. ولا يتوفر وقت لحركة الخروج، لأن العقدة تكون قد اختفت بالفعل.

حركات الدخول سهلة، أما حركات الخروج فهي التحدي الحقيقي.

الحل 1: إبقاؤه مركبًا

أبسط حل هو عدم إزالة التركيب مطلقًا. أبقوا العنصر معروضًا، وحرّكوا opacity إلى الصفر مع ضبط pointer-events: none عند إخفائه، ثم أعيدوه إلى القيمة واحد عند إظهاره.

يوفر ذلك تلاشيًا سلسًا في الاتجاهين، على حساب بقاء العنصر في DOM.

الحل 2: آلة حالات للتركيب

لإزالة التركيب فعليًا، صمّموا آلة حالات صغيرة بمراحل مثل mounting وmounted وunmounting وunmounted. ولا تزيلوا العقدة إلا بعد انتهاء حركة الخروج.

تحدد الحالة أصناف الحركة التي تُطبّق في كل مرحلة.

خطاف useMount

يمكنكم تغليف الآلة في خطاف مخصص يُسمى غالبًا useMount. يأخذ الخطاف حالة الظهور المطلوبة، ويعيد ما إذا كان ينبغي أن يكون العنصر موجودًا في DOM، إلى جانب مرحلته الحالية.

وتبقى المكوّنات بسيطة، لأن منطق التوقيت يكون داخل الخطاف القابل لإعادة الاستخدام.

أزواج أصناف الدخول والخروج

استنادًا إلى الاصطلاحات الشائعة، طبّقوا enter ثم enter-active عند التركيب، وexit ثم exit-active عند الإزالة. يحدد الصنف الأساسي حالة البداية، بينما يحدد الصنف النشط حالة النهاية مع وجود انتقال.

ويؤدي التبديل بينهما في الإطار المناسب إلى تشغيل الحركة.

الاستماع إلى transitionend

لمعرفة وقت انتهاء حركة الخروج، استمعوا إلى حدث transitionend على العنصر. وعند إطلاقه لحركة الخروج، غيّروا الحالة إلى unmounted وأزيلوا العقدة.

يربط ذلك إزالة التركيب بنهاية الحركة المرئية بدقة، بدلًا من الاعتماد على مهلة زمنية تقديرية.

مكوّن انتقال قابل لإعادة الاستخدام

يمكنكم تغليف كل ذلك في مكوّن Transition يقبل خاصية in والعناصر الفرعية. فهو يُبقي العناصر الفرعية مركبة طوال حركة الخروج، ويطبّق الأصناف المناسبة لكل مرحلة.

ولا يحتاج مستخدمو المكوّن إلا إلى تبديل in، ليحصلوا تلقائيًا على حركتي دخول وخروج صحيحتين.

تشغيل الصنف النشط بشكل صحيح

هناك تفصيل دقيق: يجب أن تتيحوا للمتصفح رسم صنف البداية قبل إضافة الصنف النشط، وإلا فسيقفز العنصر من دون انتقال. ويضمن استخدام requestAnimationFrame أو فرض إعادة التدفق بين الصنفين تشغيل الانتقال فعليًا.

وهذا يضمن تسجيل المتصفح لقيم البداية أولًا.

مقارنة مع react-transition-group

توفر مكتبة react-transition-group مكوّنَي Transition وCSSTransition اللذين يطبّقان هذا النمط تمامًا، بما في ذلك دورة حياة الأصناف وتوقيت إزالة التركيب.

تعكس نسختكم المبنية يدويًا أفكارها الأساسية، مما يجعل فهم المكتبة سهلًا بعد بناء نسخة منها بأنفسكم.

متى تستخدمون مكتبة ومتى تنفذونها يدويًا

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

اختاروا الحل بناءً على مقدار تعقيد الحركة الذي يحتاجه تطبيقكم فعليًا.

جمع الأجزاء معًا

تتطلب حركات الخروج إبقاء العنصر موجودًا حتى تكتمل حركته، سواء بعدم إزالة تركيبه مطلقًا، أو باستخدام آلة حالات مع transitionend، أو بالاستعانة بمكتبة.

يتيح لكم فهم الآلية اختيار أخف حل يلبي احتياجاتكم.

اختبار سريع

اختبروا مدى فهمكم لحركات الخروج.

مراجعة

تعلّمتم سبب صعوبة حركات الخروج، وحلين لها، هما الإبقاء على العنصر مركبًا وآلة حالات للتركيب، وكيف يحدد transitionend توقيت إزالة التركيب، وكيفية بناء مكوّن Transition قابل لإعادة الاستخدام.

كما تعرّفتم إلى الحالات التي يُفضّل فيها استخدام react-transition-group بدلًا من التنفيذ اليدوي.

الأسئلة الشائعة

هل درس «تحريكات الدخول والخروج دون مكتبة» مجاني؟

نعم — نص درس «تحريكات الدخول والخروج دون مكتبة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة React Academy، انتقل إلى CoddyKit PRO. تتضمن دورة React Academy 4 دروس في المجموع.

ماذا ستتعلم في «تحريكات الدخول والخروج دون مكتبة»؟

نفّذ تحريكات التركيب وإلغاء التركيب في React عبر التحكم يدويًا في توقيتَي display وopacity. تتمرن على React Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ React Academy؟

لا تُشترط خبرة سابقة. React Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «تحريكات الدخول والخروج دون مكتبة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس React Academy هذا؟

نعم. كل درس في React Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. انتقالات CSS مع تغيّرات حالة React
  2. رسوم CSS المتحركة بإطاراتها المفتاحية مع React
  3. استخدام useLayoutEffect للقياسات قبل التحريك
  4. تحريكات الدخول والخروج دون مكتبة
← العودة إلى React Academy