Next.jsアプリへのページネーション追加
メニューを表示するにはスワイプしてください
ユーザーが異なるページを移動し、すべての請求書を閲覧できるようにするため、検索機能と同様にURLパラメータを使用したページネーションの実装。
プロジェクトに戻る
ステップ 1
Paginationコンポーネントに移動すると、これはクライアントコンポーネントであることがわかります。データベースの秘密情報を公開しないよう、クライアントサイドでデータを取得するのは避けてください。代わりに、サーバー側でデータを取得し、コンポーネントにプロップとして渡します。app/dashboard/invoices/page.tsxで、新しい関数fetchInvoicesPagesをインポートし、searchParamsから検索クエリを引数として渡します。fetchInvoicesPagesは検索クエリに基づいて総ページ数を計算します。例えば、該当する請求書が12件あり、1ページあたり6件表示する場合、総ページ数は2となります。
totalPagesコンポーネントに<Pagination/>プロップを渡します。
ステップ 2
app/ui/invoices/pagination.tsxに移動します。usePathnameとuseSearchParamsフックをインポートします。- これらのフックを使用して現在のページを取得し、新しいページを設定します。
- このコンポーネント内のコードのコメントアウトを解除します。
注意
<Pagination/>のロジックがまだ実装されていないため、アプリケーションが一時的に動作しなくなる場合があります。後ほど対応します。
ステップ 3
<Pagination>コンポーネント内で、新しい関数createPageURLを作成します。- 検索機能と同様に、
URLSearchParamsを利用して新しいページ番号を設定します。 - URL文字列の構築には
pathNameを使用します。 allPages変数のコメントアウトを解除します。
ステップ 4
最終ステップ - ユーザーが新しい検索クエリを入力した際に、ページ番号を1にリセットすることが重要です。これを実現するには、handleSearch 内の app/ui/search.tsx 関数を更新します。
実践例
すべて明確でしたか?
フィードバックありがとうございます!
セクション 6. 章 3
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 6. 章 3