SortableContext pour les listes réordonnables
Utilisez SortableContext et useSortable pour créer des listes réordonnables avec des animations fluides
SortableContext pour les listes réordonnables est une leçon React Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage React Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours React Academy comprend 4 leçons au total.
Fonctionnement de SortableContext
SortableContext est un composant spécialisé de dnd-kit qui enveloppe une liste réorganisable. Alors que useDraggable et useDroppable gèrent le glisser-déposer général, SortableContext prend spécifiquement en charge le cas où les éléments d’une liste doivent être réorganisés en les faisant glisser vers une nouvelle position.
La propriété items
SortableContext exige une propriété items : un tableau d’ID uniques, sous forme de chaînes ou de nombres, qui correspondent aux ID utilisés dans les composants réorganisables enfants. L’ordre de ce tableau définit l’ordre actuel des éléments. Lorsque vous mettez à jour ce tableau dans l’état, la liste s’affiche de nouveau dans le nouvel ordre.
Stratégies de tri
SortableContext accepte une propriété strategy qui contrôle la manière dont les éléments sont triés. verticalListSortingStrategy est destinée aux listes verticales et calcule le point d’insertion en fonction de la position verticale. horizontalListSortingStrategy est destinée aux listes horizontales. rectSortingStrategy est destinée aux grilles. Choisissez la stratégie qui correspond à votre disposition.
Fonction useSortable
À l’intérieur de SortableContext, chaque élément de la liste utilise la fonction useSortable({ id }) au lieu de useDraggable. useSortable est un surensemble de useDraggable : elle renvoie les mêmes attributs, écouteurs, setNodeRef et transform, ainsi que des valeurs supplémentaires propres au tri, comme isDragging et overIndex.
isDragging pour l’état visuel
La valeur isDragging fournie par useSortable vaut true tant que l’élément est activement déplacé. Vous l’utilisez généralement pour réduire l’opacité de l’élément d’origine dans la liste ou lui appliquer un style d’espace réservé pendant son déplacement. Cet espace visuel indique à l’utilisateur où l’élément se trouve actuellement dans la liste.
L’utilitaire arrayMove
dnd-kit exporte un utilitaire arrayMove(array, fromIndex, toIndex) depuis @dnd-kit/sortable. Il renvoie un nouveau tableau dans lequel l’élément situé à fromIndex est déplacé vers toIndex. C’est la méthode standard pour mettre à jour votre tableau d’état lorsqu’un déplacement de tri est terminé.
Implémentation de onDragEnd pour le tri
Dans la fonction de rappel onDragEnd de DndContext pour une liste réorganisable, vous trouvez les anciens et nouveaux indices à l’aide de items.indexOf(event.active.id) et items.indexOf(event.over?.id). Si les deux indices sont valides et différents, vous appelez setItems(arrayMove(items, oldIndex, newIndex)) pour réorganiser le tableau.
Animation fluide des éléments déplacés
Lorsqu’un élément est déplacé, les autres éléments de la liste s’animent vers de nouvelles positions pour montrer où l’élément déplacé va se placer. useSortable fournit une transformation CSS pour chaque élément qui n’est pas déplacé afin de le décaler. L’ajout d’une transition CSS à cette transformation crée une animation de mouvement fluide.
Transition pour un mouvement fluide
Appliquez une transition CSS à la propriété transform des éléments réorganisables : transition: isDragging ? undefined : transform ? 'transform 200ms ease' : undefined. Lorsqu’un élément est déplacé, aucune transition n’est nécessaire : il doit suivre directement le curseur. Lorsqu’il est décalé, une transition crée une animation de glissement fluide.
Combinaison avec DragOverlay
Pour une expérience utilisateur optimale, combinez SortableContext avec DragOverlay. L’élément déplacé dans la liste devient un espace réservé semi-transparent (à l’aide de isDragging), tandis que DragOverlay affiche une copie opaque et surélevée qui suit le curseur. Cette approche évite les défauts visuels où l’élément déplacé saute d’une position à une autre.
Listes verticales et horizontales
SortableContext fonctionne aussi bien pour les listes verticales (tableaux de tâches, listes de tâches) que pour les listes horizontales (barres d’onglets, carrousels d’images). Passez d’une stratégie à l’autre en modifiant la propriété strategy. Vous pouvez même l’utiliser pour une disposition en grille avec rectSortingStrategy, qui calcule la cellule de grille la plus proche en fonction de la position du déplacement.
arrayMove dans onDragEnd
Quels arguments arrayMove reçoit-elle lorsqu’elle est appelée dans onDragEnd pour réorganiser une liste réorganisable ?
Récapitulatif de la leçon : SortableContext
SortableContext enveloppe une liste réorganisable et exige un tableau items d’ID uniques ainsi qu’une stratégie (verticale, horizontale ou en grille). Chaque élément utilise useSortable au lieu de useDraggable et bénéficie ainsi de isDragging et overIndex. Dans onDragEnd, arrayMove(items, oldIndex, newIndex) réorganise le tableau. Les transitions CSS appliquées à transform animent les éléments décalés en douceur.
Questions Fréquemment Posées
La leçon « SortableContext pour les listes réordonnables » est-elle gratuite ?
Oui — le texte complet de « SortableContext pour les listes réordonnables » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours React Academy, passe à CoddyKit PRO. Le cours React Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « SortableContext pour les listes réordonnables » ?
Utilisez SortableContext et useSortable pour créer des listes réordonnables avec des animations fluides Tu pratiques React Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer React Academy ?
Aucune expérience préalable n'est requise. React Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « SortableContext pour les listes réordonnables » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon React Academy ?
Oui. Chaque leçon React Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Architecture de dnd-kit et conception axée sur l’accessibilité
- DndContext, useDraggable et useDroppable
- SortableContext pour les listes réordonnables
- Aperçus personnalisés du glisser-déposer et DnD multi-conteneurs