useState ·
useEffect ·
useContext ·
useReducer ·
useRef ·
useMemo / useCallback
Hooks ermöglichen die Nutzung von State und Lebenszyklus-Funktionen in funktionalen Komponenten. Diese Cheatsheet fasst die wichtigsten Hooks mit Syntax und praktischen Beispielen zusammen.
useState ist der grundlegendste Hook für die Verwaltung von lokalem State in funktionalen Komponenten. Er gibt einen aktuellen Wert und eine Setter-Funktion zurück.
| Pattern | Beschreibung |
|---|---|
| const [state, setState] = useState(0) | Primitiver Wert (number, string, boolean) |
| const [state, setState] = useState({}) | Objekt-State (mit Spread-Operator updaten) |
| const [state, setState] = useState([]) | Array-State (mit Spread-Operator updaten) |
| setState(prev => prev + 1) | Funktionale Aktualisierung (bei Abhängigkeit vom vorherigen Wert) |
| useState(() => expensiveComputation()) | Lazy Initialisierung (nur einmal beim ersten Rendern) |
useEffect führt Seiteneffekte wie API-Aufrufe, DOM-Manipulationen oder das Setzen von Timern aus. Das Abhängigkeits-Array steuert, wann der Effekt erneut ausgeführt wird.
| Variante | Beschreibung |
|---|---|
| useEffect(() => {}) | Nach jedem Rendering (selten verwendet) |
| useEffect(() => {}, []) | Einmal beim Mounten (wie componentDidMount) |
| useEffect(() => {}, [dep]) | Bei Änderung von dep (wie componentDidUpdate für dep) |
| useEffect(() => { return cleanup }, []) | Mit Cleanup beim Unmounten |
eslint-plugin-react-hooks können Sie fehlende Abhängigkeiten automatisch prüfen.
useContext ermöglicht den Zugriff auf Context-Werte ohne Prop Drilling. Context ist ideal für Themen, Sprach-Einstellungen, Benutzerinformationen und andere globale Daten.
useReducer ist eine Alternative zu useState für komplexen State mit mehreren abhängigen Werten oder wenn die nächste State-Änderung vom vorherigen State abhängt. Er ähnelt Redux, aber innerhalb einer Komponente.
useRef erstellt eine mutable Referenz, die über die gesamte Lebensdauer der Komponente erhalten bleibt. Sie wird entweder für DOM-Referenzen oder für mutable Werte verwendet, die kein erneutes Rendern auslösen sollen.
useMemo und useCallback optimieren die Performance, indem sie Werte oder Funktionen zwischenspeichern (memoizen) und nur bei Änderung der Abhängigkeiten neu berechnen.
| Hook | Rückgabewert | Verwendung |
|---|---|---|
| useMemo | Wert (beliebiger Typ) | Teure Berechnungen, Filterungen |
| useCallback | Memoized Funktion | Event-Handler, die an Kindkomponenten weitergegeben werden |
useState
useEffect
useContext
useReducer
useRef
useMemo
useEffect(() => { ... }, [deps]) ·
useContext(MyContext) ·
useReducer(reducer, initialState)