Contenu du cours
Next.js 14
Next.js 14
4. Déploiement et Base de Données
Pagination
Pour permettre aux utilisateurs de naviguer à travers différentes pages et de voir toutes les factures, implémentez la pagination en utilisant les paramètres d'URL, similaire à la fonctionnalité de recherche.
Retour au projet
Étape 1
- Si vous naviguez vers le composant
Pagination
, vous voyez qu'il s'agit d'un composant client. Pour éviter d'exposer les secrets de la base de données, évitez de récupérer des données côté client. Au lieu de cela, récupérez les données côté serveur et passez-les en tant que prop au composant ; - Dans
app/dashboard/invoices/page.tsx
, importez une nouvelle fonction appeléefetchInvoicesPages
et passez la requête de recherche desearchParams
comme argument :fetchInvoicesPages
calcule le nombre total de pages en fonction de la requête de recherche. Par exemple, s'il y a 12 factures correspondantes avec un affichage de 6 par page, le nombre total de pages serait de 2.
- Passez la prop
totalPages
au composant<Pagination/>
.
Étape 2
- Naviguez vers
app/ui/invoices/pagination.tsx
; - Importez les hooks
usePathname
etuseSearchParams
; - Utilisez ces hooks pour récupérer la page actuelle et définir la nouvelle page ;
- Décommentez le code dans ce composant.
Remarque
Votre application peut temporairement se casser car la logique de
<Pagination/>
n'est pas encore implémentée. Nous y travaillerons plus tard.
Étape 3
- À l'intérieur du composant
<Pagination>
, créez une nouvelle fonction appeléecreatePageURL
; - Similaire à la fonctionnalité de recherche, utilisez
URLSearchParams
pour définir le nouveau numéro de page; - Utilisez
pathName
pour construire la chaîne URL; - Décommentez la variable
allPages
.
Étape 4
Dernière étape - lorsque l'utilisateur saisit une nouvelle requête de recherche, il est essentiel de réinitialiser le numéro de page à 1. Pour ce faire, mettez à jour la fonction handleSearch
dans le fichier app/ui/search.tsx
.
En Pratique
Tout était clair ?
Merci pour vos commentaires !
Section 6. Chapitre 3