Pagination
ページネーションコンポーネント。ページ間のナビゲーションを提供します。
インポート
個別サブパス(バンドルサイズを抑えたい場合):
基本的な使い方
省略記号付き
多数のページがある場合は PaginationEllipsis を使用します。この例は手書きで固定位置に省略記号を配置していますが、現在ページに応じて省略記号の位置を動的に計算したい場合は下記の usePaginationRange を使ってください。
usePaginationRangeフック(動的な省略記号)
usePaginationRange(current, total, siblingCount?) は、現在ページ・総ページ数から、先頭ページ・末尾ページ・現在ページ周辺(siblingCount件ずつ、デフォルト1)・省略記号(PAGINATION_DOTS)を含むページ番号レンジを計算して返します。手書きで省略記号の位置を管理する必要がなくなります。
ページサイズ選択と組み合わせる
Selectと組み合わせて、1ページあたりの件数を切り替えるUIを構成できます。
asChildでのリンクコンポーネント差し替え(Next.js等)
PaginationLinkはasChildに対応しています。SPAルーティング(Next.jsのLink等)に差し替える場合に使用してください(PaginationPrevious / PaginationNextは内部でアイコン+テキストの複数childrenを持つためasChildは使用できません。差し替えが必要な場合はPaginationLinkを直接使用してください)。
hrefを使わずクリックハンドラのみで制御するSPAパターンでは、hrefを省略してonClickだけを渡すこともできます(<a>のままhrefなしで描画されるため、キーボード操作を保つ場合はhref="#" + preventDefault()を推奨します)。
サイズ
size プロパティでサイズを変更できます。
無効状態
最初や最後のページでは disabled を使用してナビゲーションを無効化します。
ページ番号のみ
前後ボタンなしでページ番号のみを表示することもできます。
Props
PaginationLink
| Prop | Type | Default | Description |
|---|---|---|---|
href | string | - | リンク先URL |
isActive | boolean | false | 現在のページかどうか |
disabled | boolean | false | 無効状態 |
size | 'default' | 'sm' | 'lg' | 'default' | サイズ |
asChild | boolean | false | 子要素をリンクとしてレンダリング(Next.jsのLink等への差し替え用) |
PaginationPrevious / PaginationNext
| Prop | Type | Default | Description |
|---|---|---|---|
href | string | - | リンク先URL |
disabled | boolean | false | 無効状態 |
size | 'default' | 'sm' | 'lg' | 'default' | サイズ |
asChildは使用できません(内部でアイコン+テキストの複数childrenをPaginationLinkへ渡しているため)。リンクコンポーネントを差し替えたい場合はPaginationLinkを直接使用してください。
usePaginationRange
| Prop | Type | Default | Description |
|---|---|---|---|
current* | number | - | 現在のページ番号(1始まり) |
total* | number | - | 総ページ数 |
siblingCount | number | 1 | 現在ページの前後に表示するページ数 |
戻り値は (number | typeof PAGINATION_DOTS)[](例: [1, 'DOTS', 4, 5, 6, 'DOTS', 10])です。PAGINATION_DOTSをimportして比較に使用してください。