Все компоненты
MotionReorder
Перестановка списка или сетки перетаскиванием, с поддержкой клавиатуры.
ВебReact NativeСписки
Попробуйте
Кратчайшее использование
Playlist.jsx<MotionReorder
items={tracks}
onItemsChange={setTracks}
layout="list"
renderItem={(track) => track.title}
/>;
Что он берёт на себя
- Остальные элементы уступают место во время перетаскивания (
reorder="live") или после отпускания (reorder="drop"). - Раскладки списком и сеткой с
columns и gap. - Перемещения с клавиатуры в вебе и действия доступности в React Native.
- Управляемый через
items и onItemsChange или неуправляемый через defaultItems.
Для чего подходит
- Плейлист.
- Бэклог с приоритетами.
- Сетка фотографий.
Props
| Проп | Тип | По умолчанию | Описание |
|---|
items | readonly T[] | | Элементы, когда порядком управляете вы. |
|---|
defaultItems | readonly T[] | [] | Начальные элементы, когда порядок хранит компонент. |
|---|
onItemsChange | (items, { reason, key }) => void | | Выполняется с новым порядком и источником изменения: перетаскивание, отпускание или клавиатура. |
|---|
getKey | (item) => string | number | item | Возвращает уникальный ключ элемента. По умолчанию — сам элемент. |
|---|
renderItem | (item, { index, dragging }) => ReactNode | item.label | Рисует элемент; получает его индекс и то, перетаскивают ли его. |
|---|
reorder | 'live' | 'drop' | 'live' | live двигает другие элементы во время перетаскивания; drop ждёт отпускания. |
|---|
layout | 'list' | 'grid' | 'grid' | list или grid. |
|---|
columns | number | 3 | Колонки в сетке. |
|---|
gap | number | 12 | Расстояние между элементами в пикселях. |
|---|
disabled | boolean | false | Отключает перетаскивание. |
|---|
duration | number | 260 | Миллисекунды на то, чтобы элементы уступили место. |
|---|
itemClassName | string | | Класс для элемента каждого пункта; itemStyle задаёт его встроенный стиль. |
|---|
Остальные props передаются отрендеренному элементу, поэтому className, style и обработчики событий работают как обычно.