Mettre en place un loader au changement d'une page Nextjs

Avez-vous déjà été sur un site où vous cliquez sur un lien et rien ne se passe ? Ou peut-être vous êtes-vous demandé si votre demande a bien été reçue ? C'est ici que la mise en place d'un loader entre en jeu. Dans cet article, nous allons vous expliquer pourquoi il est important d'avoir un loader sur votre site web, comment le mettre en place dans votre projet Nextjs et créer une fonction qui permettra d'afficher le loader tant que la page n'est pas chargée. Si vous souhaitez améliorer l'expérience utilisateur sur votre site web et rassurer vos visiteurs, cet article est pour vous.
•
Mis à jour le 14 août 2026
•
3 min de lecture
Believemy logo

Pourquoi mettre en place un loader ?

La mise en place d'un loader permet à l'utilisateur de savoir ce qu'il se passe sur le site. En effet, il serait dommage qu'il ne se passe rien sur notre page... Le loader permet de communiquer avec l'utilisateur, de lui montrer que nous avons bien reçu sa requête.

 

Prérequis

La mise en place de ce loader se fera dans le Layout de votre site internet NextJS. Il faut donc bien avoir créé un fichier Layout.js (ou un nom équivalant) qui reprendra la base de vos pages dans votre projet.

 

Qu'est ce que le Layout ?

Le layout est un composant qui sera présent partout sur le site web, son code JSX et CSS sera appliqué sur toutes les pages du site.

Typiquement, on met dans le layout la base de chacune de nos pages : les balises head, le style CSS ainsi que les entêtes ou encore les pieds de page.

 

Création du loader

Nous allons faire une fonction qui verifie si l'URL change. Si c'est le cas, on change l'état du useState qui permet d'activer ou non le loader sur true. Dans ce cas, on retourne du code JSX qui s'affichera tant que la nouvelle page n'est pas chargée.

Dans le cas suivant, on écrit simplement un texte de chargement.

1.On commence par écrire une fonction dans laquelle on appelle le router et où on crée l'état du loading:

JAVASCRIPT
function Loading() {
        const router = useRouter();

        const [loading, setLoading] = useState(false);
}

 

2.On y ajoute un useEffect qui servira à vérifier si l'URL change.

JAVASCRIPT
useEffect(() => {
            const handleStart = (url) => (url !== router.asPath) && setLoading(true);
            const handleComplete = (url) => (url === router.asPath) && setLoading(false);

            router.events.on('routeChangeStart', handleStart)
            router.events.on('routeChangeComplete', handleComplete)
            router.events.on('routeChangeError', handleComplete)

            return () => {
                router.events.off('routeChangeStart', handleStart)
                router.events.off('routeChangeComplete', handleComplete)
                router.events.off('routeChangeError', handleComplete)
            }
        })

Quand le changement de page débute, on appele la fonction handleStart, qui change la valeur de loading sur TRUE.
Quand il se termine ou qu'il échoue, on appelle la fonction handleComplete, qui change la valeur de loading sur FALSE.

 

3.On retourne enfin du JSX.

JAVASCRIPT
return loading && (
            <>
                Chargement...
            </>
);

Ce JSX est le contenu qui est affiché au changement de la page.

 

Code obtenu

JAVASCRIPT
function Loading() {
        const router = useRouter();

        const [loading, setLoading] = useState(false);


        useEffect(() => {
            const handleStart = (url) => (url !== router.asPath) && setLoading(true);
            const handleComplete = (url) => (url === router.asPath) && setLoading(false);

            router.events.on('routeChangeStart', handleStart)
            router.events.on('routeChangeComplete', handleComplete)
            router.events.on('routeChangeError', handleComplete)

            return () => {
                router.events.off('routeChangeStart', handleStart)
                router.events.off('routeChangeComplete', handleComplete)
                router.events.off('routeChangeError', handleComplete)
            }
        })

        return loading && (
            <>
                Chargement...
            </>);
    }

Par la suite, nous allons devoir ajouter la balise <Loading /> dans le JSX du composant. Celle-ci permet d'appeler la fonction précédemment créée. Le loader s'affichera donc à l'endroit exact où vous placerez la balise.

Par exemple - Layout.js :

JAVASCRIPT
// Composant
import Loader from "loader.js";

export default function Layout(props) {
    return (
        <>
            // Tous vos composants
            <Loader />
        </>
    )
}

 

Ressources

Catégorie : Développeurs

Partager cet article

Tu veux nous aider ? Fais un lien vers cet article sur tes réseaux ou encore mieux : sur ton site, dans un article ou dans ta newsletter.

Believemy logo
Commentaires (0)

Vous devez être connecté pour commenter cet article : se connecter ou s'inscrire.

À lire ensuite

Mettre en place la revalidation sur-demande avec NextJS

Si vous êtes développeur web, vous savez sûrement à quel point il est important d'avoir un site rapide et réactif pour offrir une expérience utilisateur optimale. Dans cet article, nous allons vous présenter comment mettre en place la revalidation sur-demande avec NextJS, une fonctionnalité qui permet de rafraîchir les données de votre site uniquement lorsque cela est nécessaire. Grâce à cette méthode, vous pourrez économiser des ressources et améliorer la performance de votre site web, tout en offrant des données à jour à vos utilisateurs.

31 mars 2023

Comment ajouter un favicon avec NextJS ?

Apprenez comment ajouter facilement un favicon à votre projet NextJS avec ce guide détaillé et découvrez également comme générer un favicon à la demande grâce à ImageResponse.

7 octobre 2024

Les nouveautés de NextJS 15

NextJS 15 a été présenté aux yeux du monde le 24 octobre 2024 à San Francisco, voici tout ce que l'on sait des puissantes nouveautés de NextJS 15 !

13 septembre 2024

Comment utiliser les Server Actions avec NextJS

Découvrez pourquoi et comment les Server Actions de NextJS améliorent les performances à la fois sur les Client Components et les Server Components, et apprenez à les utiliser dans vos projets.

26 septembre 2024

Pourquoi faut-il apprendre NextJS en 2025 : tous les avantages !

Explorez pourquoi Next.js est un framework incontournable en 2025 pour les développeurs. Apprenez ses avantages, ses fonctionnalités uniques et pourquoi le marché de l'emploi l'adopte de plus en plus.

14 octobre 2024

Créer une barre de progression de lecture

Que vous ayez un blog ou des contenus à lire, proposer une barre de progression de lecture est véritablement nécessaire pour le confort de vos utilisateurs. Cet article va vous apprendre comment faire !

16 juin 2020

Utiliser le localStorage dans une application NextJs ou React

Cet article a pour but de vous apprendre à utiliser le localStorage dans une application Next.JS ou React. En effet, il y a quelques différences avec l'utilisation normale, dans une application vanilla.

21 août 2024

Envoyer un email avec NextJS et SendGrid gratuitement

Vous avez toujours souhaité envoyer des emails avec JavaScript ? Ou plus précisément, comment envoyer des emails avec React voir NextJS ? Alors découvrons ensemble comment utiliser SendGrid ! Il s'agit d'une solution facile et rapide à mettre en place, qui nous permettra de s'assurer que nos emails soient envoyés et le plus important : qu'ils soient bien réceptionnés.

13 octobre 2021

Devenez le solopreneur que vous rêvez d'être.

Premier projet, reconversion, lancement de business : accédez à nos formations, pratiquez sur des cas concrets et avancez avec un accompagnement clair.