Tutti i componenti
MotionReorder
Trascina per riordinare una lista o una griglia, con supporto per la tastiera.
WebReact NativeListe
Provalo
Preparazione dell’esempio…
L’uso più breve
Playlist.jsx<MotionReorder
items={tracks}
onItemsChange={setTracks}
layout="list"
renderItem={(track) => track.title}
/>;
Di che cosa si occupa al posto tuo
- Gli altri elementi si spostano mentre trascini (
reorder="live") o quando rilasci (reorder="drop"). - Layout a lista e a griglia con
columns e gap. - Spostamenti da tastiera sul web, e azioni di accessibilità su React Native.
- Controllato con
items e onItemsChange, oppure non controllato con defaultItems.
Usalo per
- Una playlist.
- Un backlog con priorità.
- Una griglia di foto.
Props
| Prop | Tipo | Predefinito | Descrizione |
|---|
items | readonly T[] | | Gli elementi, quando controlli tu l’ordine. |
|---|
defaultItems | readonly T[] | [] | Elementi iniziali, quando è il componente a gestire l’ordine. |
|---|
onItemsChange | (items, { reason, key }) => void | | Viene eseguito con il nuovo ordine e con l’origine della modifica: trascinamento, rilascio o tastiera. |
|---|
getKey | (item) => string | number | item | Restituisce una key unica per un elemento. Di default è l’elemento stesso. |
|---|
renderItem | (item, { index, dragging }) => ReactNode | item.label | Disegna un elemento; riceve il suo indice e se lo si sta trascinando. |
|---|
reorder | 'live' | 'drop' | 'live' | live sposta gli altri elementi durante il trascinamento; drop aspetta il rilascio. |
|---|
layout | 'list' | 'grid' | 'grid' | list o grid. |
|---|
columns | number | 3 | Colonne di una griglia. |
|---|
gap | number | 12 | Spazio tra gli elementi, in pixel. |
|---|
disabled | boolean | false | Disattiva il trascinamento. |
|---|
duration | number | 260 | Millisecondi per gli elementi che si spostano. |
|---|
itemClassName | string | | Classe per l’elemento di ogni voce; itemStyle imposta il suo stile inline. |
|---|
Le altre props vanno all’elemento renderizzato, quindi className, style e gli event handler funzionano come sempre.