0Pricing
React Academy · Lezione

Architettura di dnd-kit e design incentrato sull'accessibilità

Comprendere il modello a sensori di dnd-kit, gli annunci di accessibilità e le differenze rispetto a react-beautiful-dnd

Architettura di dnd-kit e design incentrato sull'accessibilità è una lezione React Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento React Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso React Academy include 4 lezioni in totale.

Perché dnd-kit ha sostituito react-beautiful-dnd

react-beautiful-dnd era la libreria di riferimento per il drag and drop in React, ma è stata archiviata ufficialmente nel 2023 e non è più sottoposta a manutenzione. La comunità si è rapidamente orientata verso dnd-kit come sostituto consigliato, progettato da zero per React moderno e tenendo conto dell'accessibilità.

Architettura di base di dnd-kit

dnd-kit si basa su tre concetti architetturali fondamentali: DndContext gestisce tutto lo stato del trascinamento e coordina gli elementi trascinabili e quelli che accettano il rilascio, i sensors astraggono i metodi di input così che la stessa logica di trascinamento funzioni con mouse, tocco e tastiera, mentre i modifiers consentono di agganciare, limitare o trasformare il movimento durante il trascinamento.

Sensors: astrazione dell'input

dnd-kit include tre sensori integrati. PointerSensor gestisce sia l'input del mouse sia quello tattile tramite l'API unificata Pointer Events. KeyboardSensor abilita il drag and drop interamente da tastiera. TouchSensor gestisce gli eventi touch legacy. I sensori si configurano tramite la prop sensors di DndContext.

Istruzioni per il drag and drop da tastiera

dnd-kit include la navigazione da tastiera per l'accessibilità. Gli utenti premono Space per sollevare un elemento, Arrow keys per spostarlo in una nuova posizione, Space again per rilasciarlo e Escape per annullare il trascinamento senza apportare modifiche. Queste interazioni vengono annunciate automaticamente agli screen reader.

Supporto per ARIA e screen reader

dnd-kit applica automaticamente aria-grabbed agli elementi trascinabili per indicare il relativo stato di presa alle tecnologie assistive. Utilizza aria-dropeffect sulle aree che accettano il rilascio per comunicare cosa accadrà quando un elemento verrà rilasciato. Un'area live annuncia gli aggiornamenti di stato, così gli utenti degli screen reader ricevono conferme come "Elemento sollevato" o "Elemento rilasciato correttamente".

Design senza CSS e compatibile con il tree shaking

dnd-kit è progettato per supportare il tree shaking, ovvero consente di importare solo i componenti effettivamente utilizzati. Non include CSS predefiniti: tutto lo stile visivo è responsabilità dell'utente, che ha il pieno controllo sull'aspetto degli elementi trascinabili, degli overlay e delle aree di rilascio. In questo modo le dimensioni del bundle restano minime.

Callback degli eventi di DndContext

DndContext fornisce tre callback principali per monitorare il ciclo di vita del trascinamento. onDragStart viene eseguito quando l'utente inizia a trascinare e riceve l'ID dell'elemento attivo. onDragOver viene eseguito continuamente mentre l'elemento trascinato passa sopra i target che accettano il rilascio. onDragEnd viene eseguito al termine del trascinamento e fornisce l'elemento attivo e il target di rilascio.

Configurazione dei sensori in DndContext

Si passa un array di configurazioni dei sensori a DndContext utilizzando la prop sensors insieme all'hook useSensors. Ogni sensore viene inizializzato con useSensor(SensorClass, options). Ad esempio, è possibile configurare PointerSensor con una distanza minima di trascinamento per evitare trascinamenti accidentali quando si fa clic.

Modifier per vincolare il movimento

I modifier trasformano le coordinate del trascinamento prima che vengano applicate all'elemento trascinato. restrictToVerticalAxis blocca il movimento su un'unica direzione. restrictToParentElement mantiene l'elemento trascinato all'interno del relativo contenitore. snapCenterToCursor aggancia l'elemento in modo che il suo centro segua il cursore. È possibile comporre più modifier in un array.

Sistema degli ID per droppable e draggable

Ogni elemento draggable e droppable deve avere un ID univoco, sotto forma di stringa o numero. Questi ID sono il metodo principale con cui dnd-kit tiene traccia dell'elemento trascinato e della destinazione del rilascio. In onDragEnd, si legge event.active.id per l'elemento trascinato e event.over?.id per il target di rilascio, così da aggiornare lo stato dell'applicazione.

Filosofia basata sull'accessibilità

A differenza di molte librerie DnD che considerano il supporto da tastiera un'aggiunta secondaria, dnd-kit pone l'accessibilità al centro del proprio design. KeyboardSensor è un componente di primo livello, con le stesse capacità di PointerSensor. Tutti gli attributi ARIA vengono gestiti automaticamente e gli annunci personalizzati possono essere configurati tramite la prop accessibility di DndContext.

Verifica del sensore per tastiera

Quale tasto utilizza dnd-kit per annullare un trascinamento da tastiera in corso senza apportare modifiche?

Riepilogo della lezione: fondamenti di dnd-kit

dnd-kit ha sostituito react-beautiful-dnd, ormai archiviato, come standard della comunità per il drag and drop in React. La sua architettura ruota attorno a DndContext per lo stato, ai sensors per l'astrazione dell'input (Pointer, Keyboard, Touch) e ai modifiers per vincolare il movimento. L'accessibilità è un requisito fondamentale: attributi ARIA, annunci tramite live region e navigazione completa da tastiera sono integrati.

Domande Frequenti

La lezione «Architettura di dnd-kit e design incentrato sull'accessibilità» è gratuita?

Sì — il testo completo di «Architettura di dnd-kit e design incentrato sull'accessibilità» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso React Academy, passa a CoddyKit PRO. Il corso React Academy include 4 lezioni in totale.

Cosa imparerò in «Architettura di dnd-kit e design incentrato sull'accessibilità»?

Comprendere il modello a sensori di dnd-kit, gli annunci di accessibilità e le differenze rispetto a react-beautiful-dnd Eserciti React Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare React Academy?

Non è richiesta alcuna esperienza precedente. React Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Architettura di dnd-kit e design incentrato sull'accessibilità»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione React Academy?

Sì. Ogni lezione React Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Architettura di dnd-kit e design incentrato sull'accessibilità
  2. DndContext, useDraggable e useDroppable
  3. SortableContext per liste riordinabili
  4. Overlay personalizzati per il drag e DnD tra più contenitori
← Torna a React Academy