所有元件

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 上也能用。

用到它的範例

搜尋

輸入關鍵字搜尋文件。