Arquitectura de dnd-kit y diseño centrado en la accesibilidad
Comprender el modelo de sensores de dnd-kit, sus anuncios de accesibilidad y sus diferencias con react-beautiful-dnd
Arquitectura de dnd-kit y diseño centrado en la accesibilidad es una lección gratuita de React Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de React Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de React Academy incluye 4 lecciones en total.
Por qué dnd-kit sustituyó a react-beautiful-dnd
react-beautiful-dnd era la biblioteca de referencia para arrastrar y soltar en React, pero se archivó oficialmente en 2023 y ya no recibe mantenimiento. La comunidad adoptó rápidamente dnd-kit como sustituto recomendado, diseñado desde cero teniendo en cuenta React moderno y la accesibilidad.
Arquitectura principal de dnd-kit
dnd-kit se basa en tres conceptos arquitectónicos principales: DndContext administra todo el estado del arrastre y coordina los elementos arrastrables y los elementos de destino; los sensors abstraen los métodos de entrada para que la misma lógica de arrastre funcione con el ratón, la pantalla táctil y el teclado; y los modifiers permiten ajustar, restringir o transformar el movimiento del arrastre.
Sensores: abstracción de la entrada
dnd-kit incluye tres sensores integrados. PointerSensor gestiona la entrada del ratón y de la pantalla táctil mediante la API unificada Pointer Events. KeyboardSensor habilita el arrastre y la suelta usando únicamente el teclado. TouchSensor gestiona los eventos táctiles heredados. Configure los sensores mediante la propiedad sensors de DndContext.
Instrucciones para arrastrar y soltar con el teclado
dnd-kit incorpora navegación mediante el teclado para facilitar la accesibilidad. Los usuarios pulsan Espacio para recoger un elemento, las teclas de flecha para moverlo a una nueva posición, Espacio de nuevo para soltarlo y Escape para cancelar el arrastre sin realizar cambios. Estas interacciones se anuncian automáticamente a los lectores de pantalla.
Compatibilidad con ARIA y lectores de pantalla
dnd-kit aplica automáticamente aria-grabbed a los elementos arrastrables para indicar su estado de sujeción a las tecnologías de asistencia. Usa aria-dropeffect en las zonas donde se pueden soltar elementos para comunicar qué ocurrirá al soltar uno. Una región dinámica anuncia las actualizaciones de estado para que los usuarios de lectores de pantalla oigan confirmaciones como "Elemento recogido" o "Elemento soltado correctamente."
Diseño con tree shaking y sin CSS
dnd-kit está diseñado para admitir tree shaking, lo que significa que solo importa las partes que realmente utiliza. No incluye CSS integrado: usted se encarga de todos los estilos visuales, lo que le proporciona un control total sobre la apariencia de los elementos arrastrables, las superposiciones y las zonas de suelta. Esto mantiene el tamaño del paquete al mínimo.
Callbacks de eventos de DndContext
DndContext proporciona tres callbacks de eventos principales para seguir el ciclo de vida del arrastre. onDragStart se ejecuta cuando el usuario comienza a arrastrar y recibe el ID del elemento activo. onDragOver se ejecuta continuamente mientras el elemento arrastrado se mueve sobre destinos donde se puede soltar. onDragEnd se ejecuta cuando termina el arrastre y proporciona el elemento activo y el destino de suelta.
Configurar sensores en DndContext
Pase un array de configuraciones de sensores a DndContext mediante la propiedad sensors combinada con el hook useSensors. Cada sensor se inicializa con useSensor(SensorClass, options). Por ejemplo, puede configurar PointerSensor con una distancia mínima de arrastre para evitar arrastres accidentales al hacer clic.
Modifiers para restringir el movimiento
Los modifiers transforman las coordenadas del arrastre antes de aplicarlas al elemento arrastrado. restrictToVerticalAxis bloquea el movimiento en una sola dirección. restrictToParentElement mantiene el elemento arrastrado dentro de su contenedor. snapCenterToCursor ajusta el elemento para que su centro siga el cursor. Puede combinar varios modifiers en un array.
Sistema de identificadores para elementos arrastrables y zonas de suelta
Cada elemento arrastrable y cada elemento donde se puede soltar necesitan un identificador único de tipo string o number. Estos identificadores son la forma principal en que dnd-kit sigue qué elemento se está arrastrando y dónde se está soltando. En onDragEnd, lea event.active.id para obtener el elemento arrastrado y event.over?.id para obtener el destino de suelta y actualizar el estado de la aplicación.
Filosofía centrada en la accesibilidad
A diferencia de muchas bibliotecas de DnD que consideran la compatibilidad con el teclado algo secundario, dnd-kit sitúa la accesibilidad en el centro de su diseño. KeyboardSensor es un componente de primera clase con las mismas capacidades que PointerSensor. Todos los atributos ARIA se gestionan automáticamente y puede configurar anuncios personalizados mediante la propiedad accessibility de DndContext.
Comprobación del sensor de teclado
¿Qué tecla utiliza dnd-kit para cancelar un arrastre de teclado en curso sin realizar cambios?
Repaso de la lección: fundamentos de dnd-kit
dnd-kit sustituyó a react-beautiful-dnd, ya archivada, como estándar de la comunidad para arrastrar y soltar en React. Su arquitectura gira en torno a DndContext para el estado, sensors para abstraer la entrada (Pointer, Keyboard, Touch) y modifiers para restringir el movimiento. La accesibilidad es prioritaria: incorpora atributos ARIA, anuncios mediante regiones dinámicas y navegación completa con el teclado.
Preguntas frecuentes
¿La lección «Arquitectura de dnd-kit y diseño centrado en la accesibilidad» es gratis?
Sí — el texto completo de «Arquitectura de dnd-kit y diseño centrado en la accesibilidad» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de React Academy, actualiza a CoddyKit PRO. El curso de React Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Arquitectura de dnd-kit y diseño centrado en la accesibilidad»?
Comprender el modelo de sensores de dnd-kit, sus anuncios de accesibilidad y sus diferencias con react-beautiful-dnd Practicas React Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar React Academy?
No se requiere experiencia previa. React Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Arquitectura de dnd-kit y diseño centrado en la accesibilidad»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de React Academy?
Sí. Cada lección de React Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Arquitectura de dnd-kit y diseño centrado en la accesibilidad
- DndContext, useDraggable y useDroppable
- SortableContext para listas reordenables
- Superposiciones de arrastre personalizadas y DnD entre contenedores