Introduction
Dans ce projet, vous allez apprendre à créer un Hook React personnalisé appelé useWindowSize pour obtenir la taille actuelle de la fenêtre et l'utiliser pour rendre conditionnellement la barre de navigation dans une application web.
👀 Aperçu

🎯 Tâches
Dans ce projet, vous allez apprendre :
- Implémenter le Hook personnalisé
useWindowSizepour obtenir la taille actuelle de la fenêtre - Utiliser le Hook
useWindowSizedans le composantApppour mettre à jour la barre de navigation en fonction de la largeur de la fenêtre
🏆 Réalisations
Après avoir terminé ce projet, vous serez capable de :
- Créer un Hook React personnalisé pour encapsuler une fonctionnalité réutilisable
- Utiliser les hooks
useStateetuseEffectpour gérer l'état et les effets de bord - Rendre conditionnellement des composants en fonction de la taille actuelle de la fenêtre
Implémentez le Hook useWindowSize
Pour commencer, ouvrez l'éditeur. Vous pouvez voir les fichiers suivants à partir de votre éditeur.
├── package-lock.json
├── package.json
├── public
│ ├── index.html
│ └── robots.txt
└── src
├── App.css
├── App.js
├── hooks
│ └── useWindowSize.js
├── index.css
├── index.js
├── reportWebVitals.js
└── setupTests.js
Dans cette étape, vous allez apprendre à implémenter le Hook personnalisé useWindowSize pour obtenir la taille actuelle de la fenêtre.
- Ouvrez le fichier
useWindowSize.jssitué dans le répertoiresrc/Hooks. - Dans ce fichier, importez les dépendances nécessaires :
import { useEffect, useState } from "react";
- Définissez la fonction
useWindowSize:
import { useEffect, useState } from "react";
export const useWindowSize = () => {
const [windowSize, setWindowSize] = useState({
width: window.innerWidth,
height: window.innerHeight
});
const changeWindowSize = () => {
setWindowSize({ width: window.innerWidth, height: window.innerHeight });
};
useEffect(() => {
window.addEventListener("resize", changeWindowSize);
return () => {
window.removeEventListener("resize", changeWindowSize);
};
}, []);
return windowSize;
};
Explication :
- La fonction
useWindowSizerenvoie un objet contenant la largeur et la hauteur actuelles de la fenêtre. - Le hook
useStateest utilisé pour créer une variable d'étatwindowSizeet une fonctionsetWindowSizepour la mettre à jour. - La fonction
changeWindowSizeest définie pour mettre à jour l'étatwindowSizelorsque la fenêtre est redimensionnée. - Le hook
useEffectest utilisé pour ajouter un écouteur d'événements pour l'événementresizeet le supprimer lorsque le composant est démonté. - L'objet
windowSizeest renvoyé par la fonctionuseWindowSize.
Testez l'application
- Enregistrez le fichier
useWindowSize.js. - Téléchargez les dépendances à l'aide de la commande
npm installdans le terminal, attendez que les dépendances aient fini de se télécharger puis lancez le projet à l'aide de la commandenpm start. - Une fois le projet démarré avec succès, cliquez sur "Web 8080" pour le prévisualiser dans votre navigateur.
- L'effet est que lorsque l'utilisateur redimensionne la fenêtre, le contenu du bas montrera la largeur de la fenêtre, et la barre de navigation supérieure masquera deux sous-menus sur les écrans petits et montrera trois menus sur les écrans grands.

Félicitations ! Vous avez réussi à implémenter le Hook useWindowSize et à l'utiliser dans le composant App pour mettre à jour la barre de navigation en fonction de la taille de la fenêtre.
Résumé
Félicitations ! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires sur LabEx pour améliorer vos compétences.



