Todos os componentes
MotionReorder
Arraste para reordenar uma lista ou grade, com suporte a teclado.
WebReact NativeListas
Experimente
Uso mais curto
Playlist.jsx<MotionReorder
items={tracks}
onItemsChange={setTracks}
layout="list"
renderItem={(track) => track.title}
/>;
O que ele resolve para você
- Os outros itens abrem espaço enquanto você arrasta (
reorder="live") ou quando você solta (reorder="drop"). - Layouts de lista e grade com
columns e gap. - Movimento por teclado na web e ações de acessibilidade no React Native.
- Controlado com
items e onItemsChange ou não controlado com defaultItems.
Use para
- Uma playlist.
- Um backlog priorizado.
- Uma grade de fotos.
Props
| Prop | Tipo | Padrão | Descrição |
|---|
items | readonly T[] | | Os itens, quando você controla a ordem. |
|---|
defaultItems | readonly T[] | [] | Itens iniciais, quando o componente guarda a ordem. |
|---|
onItemsChange | (items, { reason, key }) => void | | Roda com a nova ordem e se ela veio de um arraste, de soltar ou do teclado. |
|---|
getKey | (item) => string | number | item | Retorna uma key única para um item. Por padrão, o próprio item. |
|---|
renderItem | (item, { index, dragging }) => ReactNode | item.label | Desenha um item; recebe o índice e se ele está sendo arrastado. |
|---|
reorder | 'live' | 'drop' | 'live' | live move os outros itens durante o arraste; drop espera você soltar. |
|---|
layout | 'list' | 'grid' | 'grid' | list ou grid. |
|---|
columns | number | 3 | Colunas de uma grade. |
|---|
gap | number | 12 | Espaço entre os itens, em pixels. |
|---|
disabled | boolean | false | Desliga o arraste. |
|---|
duration | number | 260 | Milissegundos para os itens que abrem espaço. |
|---|
itemClassName | string | | Classe do elemento de cada item; itemStyle define o estilo inline. |
|---|
As outras props vão para o elemento renderizado, então className, style e handlers de eventos funcionam normalmente.