全部组件

MotionPager

由数据生成、可滑动的页面:引导页、轮播和标签面板。

WebReact Native选择与翻页

动手试试

正在准备示例…

最简用法

Onboarding.jsx
<MotionPager
  items={slides}
  index={page}
  onIndexChange={setPage}
  gap={16}
  renderItem={(slide) => <Slide slide={slide} />}
/>;

它替你处理的事

  • 页面跟随滑动和鼠标拖动,到两端时有阻力,并按你松手时的速度停稳。
  • 快速甩动一定会翻一页,一次手势也绝不会翻超过一页。
  • 触控板横向滚动也能翻页,并会忽略其惯性余波。
  • 翻页器获得焦点时可使用方向键、Home 和 End,纵向滚动也照常可用。
  • 非当前页不可交互。

适用场景

  • 新手引导流程。
  • 照片轮播。
  • 与 MotionHighlight 搭配的可滑动标签面板。

Props

Prop类型默认值说明
itemsreadonly T[]—必需你的数据数组。
indexnumber显示的页面。省略时由翻页器自行管理。
defaultIndexnumber0index 不受控时的起始页。
onIndexChange(index, item) => void滑动、按键或滚轮手势停稳后,立即携带索引和该项运行。
getKey(item) => string | numberitem.id为一项返回唯一且稳定的 key。默认为 item.id,字符串和数字则为其本身。
renderItem(item, { index, active }) => ReactNodeitem.label绘制一页;会收到它的索引以及是否为当前页。
gapnumber0页面之间的间距,单位为像素。
itemClassNamestring每一项元素的 class;itemStyle 设置其内联样式。
transitionTransitionspring时间曲线 { duration, easing } 或弹簧 { tempo: 'spring', spring }。弹簧被打断时会保留动量。

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

Web 与 React Native

index 可以受控(onIndexChange(index, item) 会在每次停稳时通知),也可以用 defaultIndex 交给翻页器自行管理。

同样的组件和 props 在 React Native 上也能用。

用到它的示例

搜索

输入关键词搜索文档。