Skip to Content
🎉 Utilisez JS efficacement →

🚀 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

app/loading.tsx
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

app/dashboard/loading.tsx
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

app/dashboard/page.tsx
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.

mis Ă  jour le