Wie React Hooks alles veränderten
React 16.8 brachte Anfang 2019 die Hooks — und veränderte für mich grundlegend, wie ich Komponenten denke, schreibe und pflege.
Als React 16.8 im Februar dieses Jahres die Hooks brachte, hatte ich ehrlich gesagt erst Skepsis. Class-Komponenten waren mein Alltag, und ich hatte gelernt, mit ihren Eigenheiten zu leben. Doch nach wenigen Tagen mit useState und useEffect war klar: Das ist kein neues Feature. Das ist eine neue Art zu denken.
Weniger Gerüst, mehr Logik
Was mich am meisten überrascht hat, war wie viel Ballast plötzlich verschwand. Kein this, keine Bindings im Konstruktor, kein verstreutes componentDidMount und componentWillUnmount, die eigentlich zusammengehören. Mit Hooks lebt zusammenhängende Logik endlich auch zusammen.
Eine Komponente sollte sich wie ein klarer Gedanke lesen lassen, nicht wie ein Protokoll von Lebenszyklus-Ereignissen.
Ein Beispiel aus meiner täglichen Arbeit:
function ProfileCard({ userId }) {
const [user, setUser] = useState(null);
useEffect(() => {
fetchUser(userId).then(setUser);
}, [userId]);
return user ? <Card data={user} /> : <Spinner />;
}
Früher hätte das eine Class-Komponente mit State, Konstruktor und zwei Lifecycle-Methoden gebraucht. Jetzt ist es ein paar Zeilen, die genau das sagen, was sie tun.
Wiederverwendung, die sich richtig anfühlt
Der eigentliche Durchbruch sind für mich aber Custom Hooks. Logik, die ich vorher mühsam über Higher-Order-Components oder Render-Props geteilt habe, lässt sich nun in eine eigene Funktion auslagern — useScrollPosition, useMediaQuery, useFetch. Das fühlt sich nicht nach einem Trick an, sondern nach der natürlichen Sprache von React.
Genau das macht für mich gute Werkzeuge aus: Sie nehmen dir nicht Komplexität ab, indem sie etwas verstecken, sondern indem sie dich klarer denken lassen. Hooks haben meine Komponenten kleiner, ehrlicher und besser testbar gemacht.
Natürlich gibt es auch Stolpersteine. Das Dependency-Array von useEffect will verstanden werden, und die Regeln — Hooks nur auf oberster Ebene, nur in Komponenten — sind nicht verhandelbar. Doch das sind kleine Preise für einen großen Gewinn.
Ich bin überzeugt, dass wir in einem Jahr zurückblicken und Class-Komponenten als das sehen werden, was sie waren: ein guter Zwischenschritt. Die Zukunft schreibt sich mit Funktionen.