全部组件
MotionPager
由数据生成、可滑动的页面:引导页、轮播和标签面板。
WebReact Native选择与翻页
动手试试
最简用法
Onboarding.jsx<MotionPager
items={slides}
index={page}
onIndexChange={setPage}
gap={16}
renderItem={(slide) => <Slide slide={slide} />}
/>;
它替你处理的事
- 页面跟随滑动和鼠标拖动,到两端时有阻力,并按你松手时的速度停稳。
- 快速甩动一定会翻一页,一次手势也绝不会翻超过一页。
- 触控板横向滚动也能翻页,并会忽略其惯性余波。
- 翻页器获得焦点时可使用方向键、Home 和 End,纵向滚动也照常可用。
- 非当前页不可交互。
适用场景
- 新手引导流程。
- 照片轮播。
- 与
MotionHighlight 搭配的可滑动标签面板。
Props
| Prop | 类型 | 默认值 | 说明 |
|---|
items | readonly T[] | —必需 | 你的数据数组。 |
|---|
index | number | | 显示的页面。省略时由翻页器自行管理。 |
|---|
defaultIndex | number | 0 | index 不受控时的起始页。 |
|---|
onIndexChange | (index, item) => void | | 滑动、按键或滚轮手势停稳后,立即携带索引和该项运行。 |
|---|
getKey | (item) => string | number | item.id | 为一项返回唯一且稳定的 key。默认为 item.id,字符串和数字则为其本身。 |
|---|
renderItem | (item, { index, active }) => ReactNode | item.label | 绘制一页;会收到它的索引以及是否为当前页。 |
|---|
gap | number | 0 | 页面之间的间距,单位为像素。 |
|---|
itemClassName | string | | 每一项元素的 class;itemStyle 设置其内联样式。 |
|---|
transition | Transition | spring | 时间曲线 { duration, easing } 或弹簧 { tempo: 'spring', spring }。弹簧被打断时会保留动量。 |
|---|
其他 props 会传给渲染的元素,所以 className、style 和事件处理函数照常可用。