Все компоненты

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

ПропТипПо умолчаниюОписание
itemsreadonly T[]Элементы, когда порядком управляете вы.
defaultItemsreadonly T[][]Начальные элементы, когда порядок хранит компонент.
onItemsChange(items, { reason, key }) => voidВыполняется с новым порядком и источником изменения: перетаскивание, отпускание или клавиатура.
getKey(item) => string | numberitemВозвращает уникальный ключ элемента. По умолчанию — сам элемент.
renderItem(item, { index, dragging }) => ReactNodeitem.labelРисует элемент; получает его индекс и то, перетаскивают ли его.
reorder'live' | 'drop''live'live двигает другие элементы во время перетаскивания; drop ждёт отпускания.
layout'list' | 'grid''grid'list или grid.
columnsnumber3Колонки в сетке.
gapnumber12Расстояние между элементами в пикселях.
disabledbooleanfalseОтключает перетаскивание.
durationnumber260Миллисекунды на то, чтобы элементы уступили место.
itemClassNamestringКласс для элемента каждого пункта; itemStyle задаёт его встроенный стиль.

Остальные props передаются отрендеренному элементу, поэтому className, style и обработчики событий работают как обычно.

Веб и React Native

onItemsChange(items, { reason }) сообщает, откуда пришло изменение: от перетаскивания, отпускания или клавиатуры.

В React Native действуют те же props, а перестановка также предлагается как действия доступности.

Поиск

Начните вводить, чтобы искать в документации.