React Academy · درس

بنية dnd-kit والتصميم الذي يقدّم إتاحة الوصول أولًا

افهم نموذج المستشعرات في dnd-kit وإعلانات إتاحة الوصول وكيف يختلف عن react-beautiful-dnd

الدرس 1 من 413 خطوة

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

لماذا استُبدل react-beautiful-dnd بـ dnd-kit

كانت react-beautiful-dnd مكتبة السحب والإفلات المفضّلة لـ React، لكنها أُرشفت رسميًا في عام 2023 ولم تعد قيد الصيانة. وسرعان ما التفّ المجتمع حول dnd-kit بوصفها البديل الموصى به، إذ صُمّمت من الصفر مع مراعاة React الحديثة وإمكانية الوصول.

البنية الأساسية لـ dnd-kit

تتمحور dnd-kit حول ثلاثة مفاهيم معمارية أساسية: يتولى DndContext إدارة حالة السحب والتنسيق بين العناصر القابلة للسحب والعناصر القابلة للإفلات، وتجرّد sensors طرق الإدخال بحيث تعمل منطقية السحب نفسها مع الفأرة واللمس ولوحة المفاتيح، بينما تتيح modifiers محاذاة حركة السحب أو تقييدها أو تحويلها.

المستشعرات: تجريد الإدخال

تأتي dnd-kit مع ثلاثة مستشعرات مضمّنة. يتعامل PointerSensor مع إدخالي الفأرة واللمس عبر واجهة Pointer Events API الموحّدة. يتيح KeyboardSensor السحب والإفلات باستخدام لوحة المفاتيح فقط بالكامل. ويتعامل TouchSensor مع أحداث اللمس القديمة. تضبط المستشعرات عبر الخاصية sensors في DndContext.

تعليمات السحب والإفلات باستخدام لوحة المفاتيح

توفّر dnd-kit تنقّلًا مضمّنًا باستخدام لوحة المفاتيح لدعم إمكانية الوصول. يضغط المستخدمون على Space لالتقاط عنصر، وعلى Arrow keys لنقله إلى موضع جديد، ثم على Space again لإفلاته، وعلى Escape لإلغاء السحب من دون إجراء تغييرات. يُعلَن عن هذه التفاعلات تلقائيًا لقارئات الشاشة.

دعم ARIA وقارئات الشاشة

تطبّق dnd-kit تلقائيًا aria-grabbed على العناصر القابلة للسحب للإشارة إلى حالة التقاطها للتقنيات المساعدة. وتستخدم aria-dropeffect على المناطق القابلة للإفلات لتوضيح ما سيحدث عند إفلات عنصر فيها. تعلن منطقة مباشرة عن تحديثات الحالة، بحيث يسمع مستخدمو قارئات الشاشة تأكيدات مثل "تم التقاط العنصر" أو "تم إفلات العنصر بنجاح".

تصميم قابل للإزالة عبر tree-shaking ومن دون CSS

صُمّمت dnd-kit لتدعم tree-shaking، أي أنك تستورد الأجزاء التي تستخدمها فعليًا فقط. لا تتضمن المكتبة CSS مضمّنًا، إذ تقع مسؤولية جميع التنسيقات المرئية عليك، ما يمنحك تحكمًا كاملًا في مظهر العناصر القابلة للسحب والطبقات المتراكبة ومناطق الإفلات. ويحافظ ذلك على الحد الأدنى لحجم الحزمة.

عمليات ردّ الأحداث في DndContext

يوفّر DndContext ثلاث عمليات ردّ أساسية للأحداث لتتبّع دورة حياة السحب. تُستدعى onDragStart عندما يبدأ المستخدم بالسحب، وتتلقى معرّف العنصر النشط. تُستدعى onDragOver باستمرار أثناء تحرّك العنصر المسحوب فوق الأهداف القابلة للإفلات. وتُستدعى onDragEnd عند اكتمال السحب، فتمنحك العنصر النشط وهدف الإفلات.

ضبط المستشعرات في DndContext

تمرّر مصفوفة من إعدادات المستشعرات إلى DndContext باستخدام الخاصية sensors بالاقتران مع الخطاف useSensors. ويُهيَّأ كل مستشعر باستخدام useSensor(SensorClass, options). على سبيل المثال، يمكنك ضبط PointerSensor باستخدام حد أدنى لمسافة السحب لمنع عمليات السحب غير المقصودة عند النقر.

المعدِّلات لفرض قيود الحركة

تحوّل المعدِّلات إحداثيات السحب قبل تطبيقها على العنصر المسحوب. يقفل restrictToVerticalAxis الحركة في اتجاه واحد. ويحافظ restrictToParentElement على بقاء العنصر المسحوب داخل الحاوية الخاصة به. ويجعل snapCenterToCursor مركز العنصر يتتبع مؤشر الفأرة. يمكنك تركيب عدة معدِّلات في مصفوفة.

نظام معرّفات العناصر القابلة للإفلات والسحب

يحتاج كل عنصر قابل للسحب أو للإفلات إلى معرّف فريد من نوع سلسلة نصية أو رقم. وتُعدّ هذه المعرّفات الطريقة الأساسية التي تتتبع بها dnd-kit ما يجري سحبه والمكان الذي سيُفلت فيه. داخل onDragEnd، تقرأ event.active.id للعنصر المسحوب وevent.over?.id لهدف الإفلات لتحديث حالة تطبيقك.

فلسفة تضع إمكانية الوصول أولًا

على خلاف العديد من مكتبات DnD التي تتعامل مع دعم لوحة المفاتيح كأمر ثانوي، تضع dnd-kit إمكانية الوصول في صميم تصميمها. يُعدّ KeyboardSensor مكوّنًا أساسيًا من الدرجة الأولى، ويتمتع بالإمكانات نفسها التي يتمتع بها PointerSensor. تُدار جميع سمات ARIA تلقائيًا، ويمكن ضبط الإعلانات المخصّصة عبر الخاصية accessibility في DndContext.

اختبار مستشعر لوحة المفاتيح

ما المفتاح الذي تستخدمه dnd-kit لإلغاء عملية سحب جارية باستخدام لوحة المفاتيح من دون إجراء تغييرات؟

مراجعة الدرس: أساسيات dnd-kit

استبدلت dnd-kit مكتبة react-beautiful-dnd المؤرشفة بوصفها المعيار المجتمعي للسحب والإفلات في React. وتتمحور بنيتها حول DndContext لإدارة الحالة، والمستشعرات لتجريد الإدخال (Pointer وKeyboard وTouch)، والمعدِّلات لفرض قيود الحركة. وإمكانية الوصول جزء أساسي منها: فسمات ARIA وإعلانات المنطقة المباشرة والتنقّل الكامل باستخدام لوحة المفاتيح مضمّنة.

البدء مجانًا

تعلم React مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
88
الدروس
324

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

هل درس «بنية dnd-kit والتصميم الذي يقدّم إتاحة الوصول أولًا» مجاني؟

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

ماذا ستتعلم في «بنية dnd-kit والتصميم الذي يقدّم إتاحة الوصول أولًا»؟

افهم نموذج المستشعرات في dnd-kit وإعلانات إتاحة الوصول وكيف يختلف عن react-beautiful-dnd تتمرن على React Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

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

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

كم من الوقت يستغرق درس «بنية dnd-kit والتصميم الذي يقدّم إتاحة الوصول أولًا»؟

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

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

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

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

  1. بنية dnd-kit والتصميم الذي يقدّم إتاحة الوصول أولًا
  2. DndContext وuseDraggable وuseDroppable
  3. SortableContext للقوائم القابلة لإعادة الترتيب
  4. طبقات السحب المخصصة والسحب والإفلات متعدد الحاويات
← العودة إلى React Academy