所有元件
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 與事件處理函式照常可用。