Todos los componentes
MotionReorder
Arrastra para reordenar una lista o una cuadrícula, con soporte de teclado.
WebReact NativeListas
Pruébalo
Uso mínimo
Playlist.jsx<MotionReorder
items={tracks}
onItemsChange={setTracks}
layout="list"
renderItem={(track) => track.title}
/>;
Lo que resuelve por ti
- Los demás elementos se apartan mientras arrastras (
reorder="live") o al soltar (reorder="drop"). - Layouts de lista y cuadrícula con
columns y gap. - Movimientos con teclado en la web y acciones de accesibilidad en React Native.
- Controlado con
items y onItemsChange, o no controlado con defaultItems.
Úsalo para
- Una lista de reproducción.
- Un backlog priorizado.
- Una cuadrícula de fotos.
Props
| Prop | Tipo | Por defecto | Descripción |
|---|
items | readonly T[] | | Los elementos, cuando tú controlas el orden. |
|---|
defaultItems | readonly T[] | [] | Elementos iniciales, cuando el componente guarda el orden. |
|---|
onItemsChange | (items, { reason, key }) => void | | Se ejecuta con el nuevo orden y con si vino de un arrastre, de soltar o del teclado. |
|---|
getKey | (item) => string | number | item | Devuelve una key única para un elemento. Por defecto, el propio elemento. |
|---|
renderItem | (item, { index, dragging }) => ReactNode | item.label | Dibuja un elemento; recibe su índice y si se está arrastrando. |
|---|
reorder | 'live' | 'drop' | 'live' | live mueve los demás elementos mientras arrastras; drop espera a que sueltes. |
|---|
layout | 'list' | 'grid' | 'grid' | list o grid. |
|---|
columns | number | 3 | Columnas de una cuadrícula. |
|---|
gap | number | 12 | Espacio entre elementos en píxeles. |
|---|
disabled | boolean | false | Desactiva el arrastre. |
|---|
duration | number | 260 | Milisegundos para los elementos que se apartan. |
|---|
itemClassName | string | | Clase para el elemento de cada ítem; itemStyle fija su estilo en línea. |
|---|
Las demás props van al elemento renderizado, así que className, style y los manejadores de eventos funcionan como siempre.