すべてのコンポーネント

MotionPager

データから作るスワイプできるページ。オンボーディング、カルーセル、タブパネル。

WebReact Native選択とページ送り

試してみる

サンプルを準備中…

いちばん短い使い方

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

代わりに処理してくれること

  • ページはスワイプやマウスのドラッグに追従し、端では抵抗し、離したときの速度で落ち着きます。
  • フリックすれば必ず 1 ページめくれ、1 回のジェスチャーで 2 ページ以上めくれることはありません。
  • トラックパッドの横スクロールでもページがめくれ、慣性の余韻は無視されます。
  • ページャーにフォーカスがあれば矢印キー、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各項目の要素のクラス。インラインスタイルは itemStyle で指定します。
transitionTransitionspringタイミングカーブ { duration, easing } かスプリング { tempo: 'spring', spring }。スプリングは中断されても勢いを保ちます。

ほかの props は描画される要素に渡るので、className、style、イベントハンドラーはいつもどおり使えます。

Web と React Native

index は制御することも(onIndexChange(index, item) がページが落ち着くたびに通知)、defaultIndex でページャーに任せることもできます。

同じコンポーネントと props が React Native でも使えます。

使っているサンプル

検索

入力するとドキュメントを検索します。