全部组件

MotionSwipe

滑动显示操作按钮、并可选择滑动删除的列表行。

WebReact Native手势

动手试试

正在准备示例…

最简用法

Row.jsx
<MotionSwipe
  endActions={<button onClick={() => archive(id)}>Archive</button>}
  dismiss="end"
  onDismiss={() => remove(id)}
>
  <MessagePreview />
</MotionSwipe>;

它替你处理的事

  • 行跟随横向拖动,超过操作按钮区域时有阻力,并按你松手时的速度停稳。
  • 设置 dismiss 后,长距离滑动或快速甩出会让行滑出、收起高度,然后调用 onDismiss(side)。
  • 纵向滚动照常可用,同一时间只有一行保持展开。
  • 点击已展开的行会将其收起,键盘焦点移到操作按钮上时会将其显示出来。

适用场景

  • 在收件箱中归档或删除。
  • 置顶一个会话。
  • 从列表中移除一项。

Props

Prop类型默认值说明
childrenReactNode行的内容。
startActionsReactNode把行向结束方向拖动时,在行内开始一侧显示。
endActionsReactNode把行向开始方向拖动时,在行内结束一侧显示。
dismiss'start' | 'end' | 'both'长距离滑动或快速甩出会移除该行的方向。
onDismiss(side) => void行滑出并收起后运行;请在这里把该项从数据中移除。
onOpenChange(side | null) => void携带展开的一侧运行,行收起时为 null。
disabledbooleanfalse关闭滑动。
contentClassNamestring行内容的 class;contentStyle 设置其内联样式。
transitionTransitionspring时间曲线 { duration, easing } 或弹簧 { tempo: 'spring', spring }。弹簧被打断时会保留动量。

其他 props 会传给渲染的元素,所以 className、style 和事件处理函数照常可用。

Web 与 React Native

向行内结束方向拖动时出现 startActions,向开始方向拖动时出现 endActions。用 contentClassName 为行内容设置背景。

React Native 使用同样的 props 和手势。

用到它的示例

搜索

输入关键词搜索文档。