Tous les composants
MotionReorder
Faites glisser pour réordonner une liste ou une grille, clavier compris.
WebReact NativeListes
Essayer
Préparation de l’exemple…
Usage minimal
Playlist.jsx<MotionReorder
items={tracks}
onItemsChange={setTracks}
layout="list"
renderItem={(track) => track.title}
/>;
Ce qu’il gère pour vous
- Les autres éléments s’écartent pendant le glisser (
reorder="live") ou au relâchement (reorder="drop"). - Mises en page en liste et en grille avec
columns et gap. - Déplacements au clavier sur le web, et actions d’accessibilité sur React Native.
- Contrôlé avec
items et onItemsChange, ou non contrôlé avec defaultItems.
À utiliser pour
- Une playlist.
- Un backlog priorisé.
- Une grille de photos.
Props
| Prop | Type | Défaut | Description |
|---|
items | readonly T[] | | Les éléments, quand vous contrôlez l’ordre. |
|---|
defaultItems | readonly T[] | [] | Éléments de départ, quand le composant conserve l’ordre. |
|---|
onItemsChange | (items, { reason, key }) => void | | S’exécute avec le nouvel ordre et indique s’il vient d’un glisser, d’un dépôt ou du clavier. |
|---|
getKey | (item) => string | number | item | Renvoie une key unique pour un élément. Par défaut, l’élément lui-même. |
|---|
renderItem | (item, { index, dragging }) => ReactNode | item.label | Dessine un élément ; reçoit son index et s’il est en cours de glisser. |
|---|
reorder | 'live' | 'drop' | 'live' | live déplace les autres éléments pendant le glisser ; drop attend le dépôt. |
|---|
layout | 'list' | 'grid' | 'grid' | list ou grid. |
|---|
columns | number | 3 | Colonnes d’une grille. |
|---|
gap | number | 12 | Espace entre les éléments, en pixels. |
|---|
disabled | boolean | false | Désactive le glisser. |
|---|
duration | number | 260 | Millisecondes pour les éléments qui s’écartent. |
|---|
itemClassName | string | | Classe de l’élément de chaque item ; itemStyle définit son style en ligne. |
|---|
Les autres props vont à l’élément rendu : className, style et les gestionnaires d’événements fonctionnent comme d’habitude.