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.js situé dans le répertoire src/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
useWindowSize renvoie un objet contenant la largeur et la hauteur actuelles de la fenêtre.
- Le hook
useState est utilisé pour créer une variable d'état windowSize et une fonction setWindowSize pour la mettre à jour.
- La fonction
changeWindowSize est définie pour mettre à jour l'état windowSize lorsque la fenêtre est redimensionnée.
- Le hook
useEffect est utilisé pour ajouter un écouteur d'événements pour l'événement resize et le supprimer lorsque le composant est démonté.
- L'objet
windowSize est renvoyé par la fonction useWindowSize.