Усі компоненти

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, а перестановку також пропонують як дії доступності.

Пошук

Почніть вводити, щоб шукати в документації.