dnd-kit-arkitektur og tilgængelighedsorienteret design
Forstå dnd-kits sensormodel og tilgængelighedsmeddelelser, og se, hvordan det adskiller sig fra react-beautiful-dnd.
dnd-kit-arkitektur og tilgængelighedsorienteret design er en gratis React Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i React Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. React Academy-kurset indeholder 4 lektioner i alt.
Hvorfor dnd-kit erstattede react-beautiful-dnd
react-beautiful-dnd var det foretrukne træk-og-slip-bibliotek til React, men blev officielt arkiveret i 2023 og vedligeholdes ikke længere. Fællesskabet samlede sig hurtigt om dnd-kit som den anbefalede erstatning, der blev designet fra bunden med moderne React og tilgængelighed for øje.
dnd-kit-arkitekturens grundprincipper
dnd-kit er bygget op omkring tre centrale arkitekturbegreber: DndContext håndterer al træk-og-slip-tilstand og koordinerer mellem elementer, der kan trækkes, og elementer, der kan modtage slip, sensorer abstraherer indtastningsmetoder, så den samme træk-og-slip-logik fungerer med mus, berøring og tastatur, og modifikatorer lader dig fastgøre, begrænse eller transformere trækbevægelsen.
Sensorer: Abstraktion af indtastning
dnd-kit leveres med tre indbyggede sensorer. PointerSensor håndterer både input fra mus og berøring via den samlede Pointer Events API. KeyboardSensor aktiverer fuld træk og slip udelukkende med tastaturet. TouchSensor håndterer ældre berøringshændelser. Du konfigurerer sensorer via egenskaben sensors på DndContext.
Instruktioner til træk og slip med tastatur
dnd-kit har indbygget tastaturnavigation af hensyn til tilgængeligheden. Brugere trykker på Mellemrumstasten for at tage et element op, på piletasterne for at flytte det til en ny placering, på mellemrumstasten igen for at slippe det og på Escape-tasten for at annullere trækket uden at foretage ændringer. Disse interaktioner meddeles automatisk til skærmlæsere.
ARIA- og skærmlæserunderstøttelse
dnd-kit anvender automatisk aria-grabbed på elementer, der kan trækkes, for at angive deres gribetilstand over for hjælpemiddelteknologier. Det bruger aria-dropeffect på slipområder for at kommunikere, hvad der sker, når et element slippes. Et liveområde annoncerer statusopdateringer, så brugere af skærmlæsere hører bekræftelser som "Element taget op" eller "Elementet blev sluppet".
Tree-shakebart design uden CSS
dnd-kit er designet til tree shaking, hvilket betyder, at du kun importerer de dele, du faktisk bruger. Der følger ingen CSS med — du har selv ansvaret for al visuel udformning, så du har fuld kontrol over udseendet af elementer, overlejringer og slipområder. Det holder pakkestørrelserne på et minimum.
DndContext-hændelsestilbagekald
DndContext leverer tre primære hændelsestilbagekald til sporing af trækkets livscyklus. onDragStart udløses, når brugeren begynder at trække, og modtager det aktive elements id. onDragOver udløses løbende, mens det trukne element bevæger sig over mål, der kan modtage slip. onDragEnd udløses, når trækket afsluttes, og giver dig det aktive element og slipmålet.
Konfiguration af sensorer i DndContext
Du sender en liste med sensorkonfigurationer til DndContext ved hjælp af egenskaben sensors kombineret med hooket useSensors. Hver sensor initialiseres med useSensor(SensorClass, options). Du kan f.eks. konfigurere PointerSensor med en minimumsafstand for træk for at forhindre utilsigtede træk, når der klikkes.
Modifikatorer til begrænsning af bevægelse
Modifikatorer ændrer trækkoordinaterne, før de anvendes på det trukne element. restrictToVerticalAxis låser bevægelsen til én retning. restrictToParentElement holder det trukne element inden for sin container. snapCenterToCursor fastgør elementet, så dets centrum følger markøren. Du sammensætter flere modifikatorer i en liste.
Id-system for elementer, der kan trækkes og modtage slip
Hvert element, der kan trækkes eller modtage et slip, skal have et unikt id som tekst eller tal. Disse id'er er den primære måde, dnd-kit sporer, hvad der trækkes, og hvor det slippes. I onDragEnd læser du event.active.id for det trukne element og event.over?.id for slipmålet for at opdatere tilstanden i dit program.
Tilgængelighed som førsteprioritet
I modsætning til mange træk-og-slip-biblioteker, der behandler tastaturunderstøttelse som en eftertanke, sætter dnd-kit tilgængelighed i centrum for sit design. KeyboardSensor er en førsteklasses del med de samme muligheder som PointerSensor. Alle ARIA-attributter håndteres automatisk, og brugerdefinerede annonceringer kan konfigureres via egenskaben accessibility på DndContext.
Kontrol af tastatursensor
Hvilken tast bruger dnd-kit til at annullere et igangværende tastaturtræk uden at foretage ændringer?
Opsummering af lektionen: Grundprincipper i dnd-kit
dnd-kit erstattede det arkiverede react-beautiful-dnd som fællesskabets standard for træk og slip i React. Arkitekturen centrerer sig om DndContext til tilstand, sensorer til abstraktion af indtastning (Pointer, Keyboard, Touch) og modifikatorer til begrænsning af bevægelse. Tilgængelighed har førsteprioritet: ARIA-attributter, annonceringer via liveområder og fuld tastaturnavigation er indbygget.
Lær React med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 88
- Lektioner
- 324
Ofte stillede spørgsmål
Er lektionen “dnd-kit-arkitektur og tilgængelighedsorienteret design” gratis?
Ja — hele teksten til “dnd-kit-arkitektur og tilgængelighedsorienteret design” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af React Academy-kurset, skal du opgradere til CoddyKit PRO. React Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “dnd-kit-arkitektur og tilgængelighedsorienteret design”?
Forstå dnd-kits sensormodel og tilgængelighedsmeddelelser, og se, hvordan det adskiller sig fra react-beautiful-dnd. Du øver dig i React Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på React Academy?
Der kræves ingen tidligere erfaring. React Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.
Hvor lang tid tager lektionen “dnd-kit-arkitektur og tilgængelighedsorienteret design”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne React Academy-lektion?
Ja. Alle React Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- dnd-kit-arkitektur og tilgængelighedsorienteret design
- DndContext, useDraggable og useDroppable
- SortableContext til lister, der kan omarrangeres
- Brugerdefinerede drag overlays og DnD med flere containere