Einführung
In diesem Projekt lernst du, wie du einen benutzerdefinierten React-Hook namens useWindowSize erstellen kannst, um die aktuelle Fenstergröße zu erhalten und sie zur bedingten Darstellung der Navigationsleiste in einer Webanwendung zu verwenden.
👀 Vorschau

🎯 Aufgaben
In diesem Projekt wirst du lernen:
- Implementiere den benutzerdefinierten Hook
useWindowSize, um die aktuelle Fenstergröße zu erhalten - Verwende den Hook
useWindowSizein derApp-Komponente, um die Navigationsleiste basierend auf der Fensterbreite zu aktualisieren
🏆 Errungenschaften
Nach Abschluss dieses Projekts wirst du in der Lage sein:
- Einen benutzerdefinierten React-Hook zu erstellen, um wiederverwendbare Funktionalität zu kapseln
- Die Hooks
useStateunduseEffectverwenden, um den Zustand und Nebeneffekte zu verwalten - Komponenten bedingt basierend auf der aktuellen Fenstergröße rendern
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.jsim Verzeichnissrc/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
useWindowSizegibt ein Objekt zurück, das die aktuelle Fensterbreite und -höhe enthält. - Der Hook
useStatewird verwendet, um eine ZustandsvariablewindowSizeund eine FunktionsetWindowSizezu erstellen, um sie zu aktualisieren. - Die Funktion
changeWindowSizeist definiert, um den ZustandwindowSizezu aktualisieren, wenn das Fenster vergrößert oder verkleinert wird. - Der Hook
useEffectwird verwendet, um einen Ereignislistener für dasresize-Ereignis hinzuzufügen und ihn zu entfernen, wenn die Komponente abmontiert wird. - Das Objekt
windowSizewird aus der FunktionuseWindowSizezurückgegeben.
Teste die Anwendung
- Speichere die Datei
useWindowSize.js. - Lade die Abhängigkeiten herunter, indem du im Terminal den Befehl
npm installverwendest. Warte, bis die Abhängigkeiten heruntergeladen sind, und starte dann das Projekt mit dem Befehlnpm start. - Wenn das Projekt erfolgreich gestartet ist, klicke auf "Web 8080", um es in deinem Browser zu previewen.
- Der Effekt besteht darin, dass wenn der Benutzer die Fenstergröße ändert, der untere Inhalt die Fensterbreite anzeigt und die obere Navigationsleiste auf kleinen Bildschirmen zwei Untermenüs ausblendet und auf großen Bildschirmen drei Menüs anzeigt.

Herzlichen Glückwunsch! Du hast den Hook useWindowSize erfolgreich implementiert und ihn in der App-Komponente verwendet, um die Navigationsleiste basierend auf der Fenstergröße zu aktualisieren.
Zusammenfassung
Herzlichen Glückwunsch! Du hast dieses Projekt abgeschlossen. Du kannst in LabEx weitere Labs absolvieren, um deine Fähigkeiten zu verbessern.



