0Pricing
React Academy · บทเรียน

สถาปัตยกรรม dnd-kit และการออกแบบที่คำนึงถึงการช่วยการเข้าถึงเป็นหลัก

ทำความเข้าใจโมเดลเซนเซอร์ของ dnd-kit ประกาศการช่วยการเข้าถึง และความแตกต่างจาก react-beautiful-dnd

สถาปัตยกรรม dnd-kit และการออกแบบที่คำนึงถึงการช่วยการเข้าถึงเป็นหลัก เป็นบทเรียน React Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน React Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใด dnd-kit จึงมาแทนที่ react-beautiful-dnd

react-beautiful-dnd เคยเป็นไลบรารีการลากและวางสำหรับ React ที่ได้รับความนิยม แต่ถูกเก็บเข้าสู่คลังอย่างเป็นทางการในปี 2023 และไม่มีการดูแลรักษาอีกต่อไป ชุมชนจึงหันมาใช้ dnd-kit อย่างรวดเร็วในฐานะตัวเลือกทดแทนที่แนะนำ ซึ่งออกแบบขึ้นใหม่ตั้งแต่ต้นโดยคำนึงถึง React สมัยใหม่และการเข้าถึงสำหรับทุกคน

สถาปัตยกรรมหลักของ dnd-kit

dnd-kit สร้างขึ้นบนแนวคิดทางสถาปัตยกรรมสำคัญสามประการ ได้แก่ DndContext จัดการสถานะการลากทั้งหมดและประสานงานระหว่างองค์ประกอบที่ลากได้กับองค์ประกอบที่วางได้ เซนเซอร์ แยกวิธีรับข้อมูลเข้าออกจากรายละเอียดการทำงาน ทำให้ตรรกะการลากเดียวกันรองรับเมาส์ หน้าจอสัมผัส และแป้นพิมพ์ และ ตัวปรับแต่ง ช่วยให้คุณจัดตำแหน่ง จำกัดขอบเขต หรือแปลงการเคลื่อนที่ของการลากได้

เซนเซอร์: การแยกชั้นข้อมูลเข้า

dnd-kit มีเซนเซอร์ในตัวสามชนิด PointerSensor จัดการข้อมูลเข้าจากทั้งเมาส์และหน้าจอสัมผัสผ่าน API เหตุการณ์ตัวชี้แบบรวมเป็นหนึ่งเดียว KeyboardSensor รองรับการลากและวางด้วยแป้นพิมพ์เพียงอย่างเดียวอย่างสมบูรณ์ TouchSensor จัดการเหตุการณ์สัมผัสแบบเดิม คุณกำหนดค่าเซนเซอร์ผ่านพร็อพ sensors ของ DndContext

คำแนะนำการลากและวางด้วยแป้นพิมพ์

dnd-kit มีการนำทางด้วยแป้นพิมพ์ในตัวเพื่อรองรับการเข้าถึง ผู้ใช้กด ปุ่มเว้นวรรค เพื่อหยิบรายการขึ้นมา กด ปุ่มลูกศร เพื่อย้ายไปยังตำแหน่งใหม่ กด ปุ่มเว้นวรรคอีกครั้ง เพื่อวาง และกด ปุ่มยกเลิก เพื่อยกเลิกการลากโดยไม่เปลี่ยนแปลงข้อมูล ระบบจะแจ้งการโต้ตอบเหล่านี้ให้โปรแกรมอ่านหน้าจอทราบโดยอัตโนมัติ

การรองรับ ARIA และโปรแกรมอ่านหน้าจอ

dnd-kit จะเพิ่ม aria-grabbed ให้รายการที่ลากได้โดยอัตโนมัติ เพื่อระบุสถานะการหยิบให้เทคโนโลยีสิ่งอำนวยความสะดวกทราบ และใช้ aria-dropeffect กับพื้นที่ที่วางได้ เพื่อสื่อสารว่าจะเกิดอะไรขึ้นเมื่อวางรายการลงไป ภูมิภาคถ่ายทอดสดจะแจ้งการอัปเดตสถานะ ทำให้ผู้ใช้โปรแกรมอ่านหน้าจอได้ยินการยืนยัน เช่น "หยิบรายการขึ้นแล้ว" หรือ "วางรายการสำเร็จแล้ว"

การออกแบบที่ตัดส่วนที่ไม่ได้ใช้ได้และไม่ผูกกับ CSS

dnd-kit ออกแบบมาให้สามารถตัดส่วนที่ไม่ได้ใช้ออกจากชุดรวมได้ หมายความว่าคุณจะนำเข้าเฉพาะส่วนที่ใช้งานจริงเท่านั้น ไม่มี CSS รวมมาให้ — คุณต้องรับผิดชอบการจัดรูปแบบภาพทั้งหมดเอง จึงควบคุมรูปลักษณ์ขององค์ประกอบที่ลากได้ โอเวอร์เลย์ และพื้นที่วางได้อย่างเต็มที่ วิธีนี้ช่วยให้ขนาดชุดรวมมีขนาดเล็กที่สุด

การเรียกกลับเหตุการณ์ของ DndContext

DndContext มีการเรียกกลับเหตุการณ์หลักสามรายการสำหรับติดตามวงจรการลาก onDragStart จะทำงานเมื่อผู้ใช้เริ่มลาก และได้รับ ID ของรายการที่กำลังลาก onDragOver จะทำงานอย่างต่อเนื่องขณะที่รายการที่ลากเคลื่อนที่อยู่เหนือเป้าหมายที่วางได้ onDragEnd จะทำงานเมื่อการลากเสร็จสิ้น โดยให้ทั้งรายการที่กำลังลากและเป้าหมายที่วาง

การกำหนดค่าเซนเซอร์บน DndContext

คุณส่งอาร์เรย์ของการกำหนดค่าเซนเซอร์ให้กับ DndContext โดยใช้พร็อพ sensors ร่วมกับฮุก useSensors เซนเซอร์แต่ละรายการจะเริ่มต้นด้วย useSensor(SensorClass, options) ตัวอย่างเช่น คุณสามารถกำหนดค่า PointerSensor ให้มีระยะลากขั้นต่ำ เพื่อป้องกันการลากโดยไม่ตั้งใจขณะคลิก

ตัวปรับแต่งสำหรับจำกัดการเคลื่อนที่

ตัวปรับแต่งจะแปลงพิกัดการลากก่อนนำไปใช้กับองค์ประกอบที่กำลังลาก restrictToVerticalAxis จะล็อกการเคลื่อนที่ให้อยู่ในทิศทางเดียว restrictToParentElement จะจำกัดรายการที่กำลังลากให้อยู่ภายในคอนเทนเนอร์ของรายการนั้น snapCenterToCursor จะจัดองค์ประกอบให้จุดกึ่งกลางติดตามเคอร์เซอร์ คุณสามารถประกอบตัวปรับแต่งหลายรายการไว้ในอาร์เรย์เดียวกันได้

ระบบ ID ขององค์ประกอบที่วางได้และลากได้

องค์ประกอบที่ลากได้และวางได้ทุกองค์ประกอบต้องมี ID ที่เป็นสตริงหรือตัวเลขและไม่ซ้ำกัน ID เหล่านี้เป็นวิธีหลักที่ dnd-kit ใช้ติดตามว่ากำลังลากอะไรและจะวางลงที่ใด ใน onDragEnd ให้ใช้ event.active.id เพื่ออ่าน ID ของรายการที่กำลังลาก และใช้ event.over?.id เพื่ออ่าน ID ของเป้าหมายที่วางได้สำหรับอัปเดตสถานะแอปพลิเคชัน

ปรัชญาที่ให้ความสำคัญกับการเข้าถึงเป็นอันดับแรก

ต่างจากไลบรารีการลากและวางจำนวนมากที่มองว่าการรองรับแป้นพิมพ์เป็นสิ่งที่ค่อยเพิ่มภายหลัง dnd-kit วางการเข้าถึงไว้ที่แกนกลางของการออกแบบ KeyboardSensor เป็นความสามารถหลักระดับเดียวกับ PointerSensor ระบบจะจัดการแอตทริบิวต์ ARIA ทั้งหมดโดยอัตโนมัติ และคุณสามารถกำหนดการประกาศแบบกำหนดเองผ่านพร็อพ accessibility ของ DndContext

การตรวจสอบเซนเซอร์แป้นพิมพ์

dnd-kit ใช้ปุ่มใดเพื่อยกเลิกการลากด้วยแป้นพิมพ์ที่กำลังดำเนินอยู่โดยไม่เปลี่ยนแปลงข้อมูล

สรุปบทเรียน: พื้นฐาน dnd-kit

dnd-kit มาแทนที่ react-beautiful-dnd ซึ่งถูกเก็บเข้าสู่คลังแล้ว และกลายเป็นมาตรฐานของชุมชนสำหรับการลากและวางใน React สถาปัตยกรรมของ dnd-kit มี DndContext เป็นศูนย์กลางสำหรับจัดการสถานะ มีเซนเซอร์สำหรับแยกชั้นข้อมูลเข้า (Pointer, Keyboard, Touch) และมีตัวปรับแต่งสำหรับจำกัดการเคลื่อนที่ การเข้าถึงเป็นความสามารถหลักที่มีมาในตัว ทั้งแอตทริบิวต์ ARIA การประกาศผ่านภูมิภาคถ่ายทอดสด และการนำทางด้วยแป้นพิมพ์อย่างสมบูรณ์

คำถามที่พบบ่อย

บทเรียน “สถาปัตยกรรม dnd-kit และการออกแบบที่คำนึงถึงการช่วยการเข้าถึงเป็นหลัก” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “สถาปัตยกรรม dnd-kit และการออกแบบที่คำนึงถึงการช่วยการเข้าถึงเป็นหลัก” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส React Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “สถาปัตยกรรม dnd-kit และการออกแบบที่คำนึงถึงการช่วยการเข้าถึงเป็นหลัก”

ทำความเข้าใจโมเดลเซนเซอร์ของ dnd-kit ประกาศการช่วยการเข้าถึง และความแตกต่างจาก react-beautiful-dnd คุณปฏิบัติ React Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน React Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน React Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “สถาปัตยกรรม dnd-kit และการออกแบบที่คำนึงถึงการช่วยการเข้าถึงเป็นหลัก” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน React Academy นี้ได้ไหม

ได้ บทเรียน React Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. สถาปัตยกรรม dnd-kit และการออกแบบที่คำนึงถึงการช่วยการเข้าถึงเป็นหลัก
  2. DndContext, useDraggable และ useDroppable
  3. SortableContext สำหรับรายการที่จัดลำดับใหม่ได้
  4. โอเวอร์เลย์การลากกำหนดเองและ DnD หลายคอนเทนเนอร์
← กลับไปที่ React Academy