Der Einsatz von Custom Hooks in React hat sich als genialer Ansatz etabliert, um wiederkehrende Logik zu abstrahieren und die Lesbarkeit sowie die Wartbarkeit eurer Komponenten zu verbessern. In diesem Tutorial erfährst du anhand des Beispiels „useJsonFetch“, wie du deine eigenen Hooks erstellen kannst, die speziell für das Abrufen von JSON-Daten von einem Server gedacht sind. Lass uns gleich in die Materie eintauchen.
Wichtigste Erkenntnisse
- Custom Hooks sind einfache Funktionen, die React-Hooks verwenden.
- Sie ermöglichen die Wiederverwendbarkeit von Logik über mehrere Komponenten hinweg.
- Ein Custom Hook kann mehrere Zustände wie loading, data und error handhaben.
- Die Struktur und Implementierung eines Custom Hooks ist unkompliziert und überschaubar.
Schritt-für-Schritt-Anleitung zur Erstellung des useJsonFetch Hooks
Grundlegende Überlegung
Bevor du deinen eigenen Hook schreibst, ist es wichtig, die Funktionalität zu definieren, die du benötigst. In diesem Fall möchtest du einen Hook erstellen, der JSON-Daten von einem Server abruft. Wir nennen unseren Hook „useJsonFetch“. Um zu verstehen, wie du diesen Hook implementierst, sieh dir zunächst die Verwendung von useJsonFetch in einer Komponente an.

Du rufst den Hook auf und übergibst die URL, von der du die JSON-Daten abrufen möchtest. Der Hook wird verantwortlich sein für das Abrufen der Daten sowie die Behandlung von Lade- und Fehlerzuständen.
Implementierung von useJsonFetch
Um den Custom Hook zu implementieren, erstellst du eine neue Datei, die mit „use“ beginnt, um den Konventionen von React zu entsprechen. Der Dateiname wäre also useJsonFetch.js.
In dieser Datei erstellst du eine Funktion, die die URL als Parameter entgegennimmt. In der Funktion definierst du die States für data, error und loading.
Hierbei ist data zu Beginn undefined, error ebenfalls und loading beginnt mit true, um den Ladezustand zu kennzeichnen. Das ist zurückzuführen auf die Art, wie JavaScript mit asynchronen Operationen umgeht.
Verwendung von useEffect
Innerhalb des Hooks nutzt du useEffect, um den fetch-Prozess zu starten, wenn die Komponente gemountet wird. Achte darauf, dass du den loading-Zustand entsprechend aktualisierst.
Mit await rufst du zunächst die URL mit fetch auf. Da fetch ein Promise zurückgibt, kannst du die Antwort mit await abwarten. Nach dem Abruf der Antwort wandelst du die Daten mit .json() in ein JavaScript-Objekt um.
Falls ein Fehler auftritt, fängst du ihn mit try-catch ab und setzt den error-State. Unabhängig davon, ob die Anfrage erfolgreich war oder ein Fehler aufgetreten ist, solltest du sicherstellen, dass du loading auf false setzt, sobald die Antwort angekommen ist.

Rückgabe des Hooks
Am Ende gibst du die States data, error und loading als Objekt zurück, damit der aufrufenden Komponente diese Werte zur Verfügung stehen.
Verwendung des Hooks in einer Komponente
Nun, da du deinen Hook erstellt hast, kannst du ihn in deiner Komponente verwenden. Importiere useJsonFetch in deiner Komponente und benutze das Destructuring, um die Werte zu erhalten.
Du kannst dann die Ladeanzeige implementieren, indem du loading abfragst, und die Daten, die du abgerufen hast, darstellen, wenn sie verfügbar sind.
Durch die Verwendung von useJsonFetch kannst du die logische Trennung zwischen Datenabruf und der UI-Logik beibehalten, was die Wartung deiner Komponenten erheblich verbessert.
Fazit zur Erstellung von Custom Hooks
Die Erstellung von Custom Hooks ist ein einfacher, aber wirkungsvoller Prozess, der dir hilft, deinen Code zu organisieren. Du kannst wiederverwendbare Logik kapseln und sie in jeder Komponente, die die gleiche Funktionalität benötigt, implementieren. Durch die Verwendung von Custom Hooks kannst du auch den Netzwerkabruf und die Reaktion auf Lade- oder Fehlerzustände von der Darstellung der Daten trennen.
Zusammenfassung
Mit einem eigenen Hook wie useJsonFetch lernst du, wie du asynchrone Datenabrufe in React managen kannst. Dies verbessert die Wiederverwendbarkeit und Struktur deines Codes erheblich. Du hast gesehen, wie du eine einfache Struktur aufbauen kannst, um JSON-Daten abzurufen und die verschiedenen Zustände effektiv zu verwalten.
Häufig gestellte Fragen
Was ist ein Custom Hook?Ein Custom Hook ist eine JavaScript-Funktion, die React-Hooks verwendet, um Logik zu kapseln, die in mehreren Komponenten wiederverwendet werden kann.
Wie implementiere ich den useJsonFetch Hook?Erstelle eine Funktion in einer neuen Datei, die die URL als Parameter entgegennimmt und React-Hooks wie useState und useEffect verwendet.
Warum sollte ich Custom Hooks verwenden?Das Verwenden von Custom Hooks ermöglicht dir, wiederkehrende Logik zu vereinfachen und den Code zu organisieren. Es verbessert die Wartbarkeit deiner Komponenten.
Kann ich mehrere Hooks in einer Datei haben?Ja, du kannst mehrere Hooks in einer Datei definieren und exportieren, solange sie zu einem bestimmten Kontext oder einer Funktionalität passen.
Wie gehe ich mit Fehlern in einem Custom Hook um?Du kannst Fehler mit einem try-catch-Block abfangen und den Error-State entsprechend aktualisieren.