Implementiere den useWindowSize-Hook
Um loszulegen, öffne den Editor. Du kannst die folgenden Dateien in deinem Editor sehen.
├── 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
In diesem Schritt wirst du lernen, wie du den benutzerdefinierten Hook useWindowSize implementierst, um die aktuelle Fenstergröße zu erhalten.
- Öffne die Datei
useWindowSize.js im Verzeichnis src/Hooks.
- Importiere in dieser Datei die erforderlichen Abhängigkeiten:
import { useEffect, useState } from "react";
- Definiere die Funktion
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;
};
Erklärung:
- Die Funktion
useWindowSize gibt ein Objekt zurück, das die aktuelle Fensterbreite und -höhe enthält.
- Der Hook
useState wird verwendet, um eine Zustandsvariable windowSize und eine Funktion setWindowSize zu erstellen, um sie zu aktualisieren.
- Die Funktion
changeWindowSize ist definiert, um den Zustand windowSize zu aktualisieren, wenn das Fenster vergrößert oder verkleinert wird.
- Der Hook
useEffect wird verwendet, um einen Ereignislistener für das resize-Ereignis hinzuzufügen und ihn zu entfernen, wenn die Komponente abmontiert wird.
- Das Objekt
windowSize wird aus der Funktion useWindowSize zurückgegeben.