Усі компоненти
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 і обробники подій працюють як завжди.