概要
shadcn/ui の Table コンポーネントにページネーション (Pagination) を実装する方法を解説します。
前提
以下のコードは React – shadcn/ui の Table コンポーネントについて解説 | pystyle で作成した動的なテーブルの実装の機能追加になります。 まず、上記のページでテーブルを実装し、そのコードに以下のコードを追加してください。
Pagination を実装する

1. Button コンポーネントを追加
ページ遷移ボタンの実装には、Button コンポーネント、Select コンポーネントを使用するため、インストールします。
2. ページネーションの実装
src/components/ui/pagenation.tsx
を作成し、以下の内容を記載します。
解説
ページ 5 / 100 (10 件中 1000 件)
のように、現在のページ数、総ページ数、現在の表示件数、総件数を表示します。
それぞれの値は、以下のように取得できます。
- 1 ページあたりの表示行数:
table.getState().pagination.pageSize
- 現在表示中のページ:
table.getState().pagination.pageIndex + 1
- 現在表示中のページの最終行:
table.getState().pagination.pageSize * (table.getState().pagination.pageIndex + 1)
- 総行数:
table.getRowCount()
Select コンポーネントを使用して、1 ページあたりの表示行数を変更できるようにします。
最初のページに遷移するには table.firstPage()
を呼び出します。
先頭のページでは最初のページに遷移できないため、table.getCanPreviousPage()
が false
の場合は、ボタンを無効にします。
前のページに遷移するには table.previousPage()
を呼び出します。
先頭のページでは前のページに遷移できないため、table.getCanPreviousPage()
が false
の場合は、ボタンを無効にします。
現在のページの前後 2 ページへ遷移できるボタンを表示します。 現在のページのボタンはクリックできないように無効にし、背景色を変更して強調します。
次のページに遷移するには table.nextPage()
を呼び出します。
最後のページでは次のページに遷移できないため、table.getCanNextPage()
が false
の場合は、ボタンを無効にします。
最後のページに遷移するには table.lastPage()
を呼び出します。
最後のページでは次のページに遷移できないため、table.getCanNextPage()
が false
の場合は、ボタンを無効にします。
3. ページネーションの追加
テーブルを実装した src/payment/payment-table.tsx
を以下のように変更します。
コメント