Все компоненты
MotionSwipe
Строка с действиями, открывающимися свайпом, и необязательным удалением свайпом.
ВебReact NativeЖесты
Попробуйте
Кратчайшее использование
Row.jsx<MotionSwipe
endActions={<button onClick={() => archive(id)}>Archive</button>}
dismiss="end"
onDismiss={() => remove(id)}
>
<MessagePreview />
</MotionSwipe>;
Что он берёт на себя
- Строка следует за горизонтальным перетаскиванием, сопротивляется за пределами действий и останавливается с учётом скорости отпускания.
- С
dismiss длинный свайп или бросок уводит строку, схлопывает её высоту и затем вызывает onDismiss(side). - Вертикальная прокрутка продолжает работать, и открытой остаётся только одна строка.
- Касание открытой строки закрывает её, а фокус клавиатуры на действии открывает её.
Для чего подходит
- Архивировать или удалить во входящих.
- Закрепить беседу.
- Удалить элемент из списка.
Props
| Проп | Тип | По умолчанию | Описание |
|---|
children | ReactNode | | Содержимое строки. |
|---|
startActions | ReactNode | | Появляются в начале строки при перетаскивании к концу. |
|---|
endActions | ReactNode | | Появляются в конце строки при перетаскивании к началу. |
|---|
dismiss | 'start' | 'end' | 'both' | | Стороны, где длинный свайп или бросок удаляет строку. |
|---|
onDismiss | (side) => void | | Выполняется после того, как строка уехала и схлопнулась; удалите элемент из своих данных здесь. |
|---|
onOpenChange | (side | null) => void | | Выполняется с открытой стороной или null, когда строка закрывается. |
|---|
disabled | boolean | false | Отключает свайп. |
|---|
contentClassName | string | | Класс для содержимого строки; contentStyle задаёт его встроенный стиль. |
|---|
transition | Transition | spring | Кривая timing { duration, easing } или пружина { tempo: 'spring', spring }. При прерывании пружины сохраняют инерцию. |
|---|
Остальные props передаются отрендеренному элементу, поэтому className, style и обработчики событий работают как обычно.