đ Utilisation des Loading States (loading.tsx
) dans Next.js
LâApp Router de Next.js permet dâafficher des Ă©tats de chargement (loading.tsx
) de maniÚre native et optimisée, sans avoir besoin de gérer manuellement un useState
ou useEffect
cÎté client.
1ïžâŁ Quâest-ce que loading.tsx
?
đ loading.tsx
est un React Server Component utilisé pour afficher un squelette de chargement pendant que les données de la page sont en cours de récupération.
đ Il est utile pour les pages qui chargent des donnĂ©es via des fetch cĂŽtĂ© serveur (async/await
).
đ Il est automatiquement affichĂ© lorsquâune page est en attente de donnĂ©es !
2ïžâŁ Exemple simple dâun loading.tsx
global
đ Ajout dâun Ă©tat de chargement global pour toutes les pages
export default function Loading() {
return (
<div className="flex items-center justify-center h-screen">
<p className="text-lg font-semibold">Chargement en cours...</p>
</div>
);
}
đĄ Ce composant est automatiquement affichĂ© lorsque nâimporte quelle page met du temps Ă charger.
3ïžâŁ Exemple : Loading spĂ©cifique pour une section (dashboard/loading.tsx
)
đ Ajout dâun Ă©tat de chargement uniquement pour /dashboard
export default function DashboardLoading() {
return (
<div className="flex flex-col items-center justify-center h-screen">
<p className="text-lg font-semibold">Chargement du tableau de bord...</p>
<div className="animate-spin rounded-full border-t-4 border-blue-500 border-solid h-12 w-12"></div>
</div>
);
}
đĄ Ce composant sâaffichera uniquement lors du chargement des pages dans /dashboard
.
4ïžâŁ DĂ©monstration avec une page utilisant un fetch
cÎté serveur
đ CrĂ©ons une page qui charge des donnĂ©es avec un dĂ©lai artificiel
async function fetchData() {
await new Promise((resolve) => setTimeout(resolve, 2000)); // Simule un délai
return { message: "Données chargées avec succÚs !" };
}
export default async function DashboardPage() {
const data = await fetchData();
return (
<div>
<h1 className="text-2xl font-bold">Tableau de bord</h1>
<p>{data.message}</p>
</div>
);
}
đ Lorsquâun utilisateur accĂšde Ă /dashboard
:
1ïžâŁ Le fichier loading.tsx
sâaffiche immĂ©diatement.
2ïžâŁ AprĂšs 2 secondes, les donnĂ©es sont affichĂ©es sur la page.
5ïžâŁ DiffĂ©rence avec un useState
cÎté client ?
MĂ©thode | â
loading.tsx (Server) | â useState (Client) |
---|---|---|
Gestion automatique du state | â Oui | â Non |
OptimisĂ© pour le SSR | â Oui | â Non |
Bloque le rendu cĂŽtĂ© serveur | â Oui | â Non |
Besoin de gĂ©rer useState / useEffect | â Non | â Oui |
đĄ Avec loading.tsx
, plus besoin de gérer manuellement des loaders cÎté client !
đŻ Conclusion : Pourquoi utiliser loading.tsx
?
â Plus simple â Pas besoin de gĂ©rer useState
et useEffect
.
â Plus rapide â IntĂ©grĂ© directement dans le Server Rendering.
â Meilleure UX â Evite les pages blanches lors du chargement des donnĂ©es.