Ruf Hooks nur auf der obersten Ebene einer Komponente oder eines anderen Hooks auf, nie in einer Bedingung, einer Schleife oder einem verschachtelten Callback, und nur aus React-Funktionen heraus. Der Grund: React speichert Hook-State als geordnete Liste am Fiber und ordnet jeden Aufruf über die Aufrufreihenfolge einem Slot zu, nicht über den Namen. Ändert sich die Reihenfolge zwischen Renders, liest jeder Hook danach den falschen Slot.
Warum Interviewer das fragen
Die Regeln lassen sich leicht aufsagen, der Interviewer fragt also eigentlich nach dem Warum. Wer die geordnete Slot-Liste erklärt, versteht die Implementierung und wird bei Custom Hooks, bedingter Logik und Lint-Ausnahmen richtig denken. Es öffnet außerdem natürlich die Nachfrage, wie du Code strukturierst, wenn du etwas nur manchmal brauchst, und genau da fangen schwächere Kandidaten an, Hooks in if-Blöcke zu schreiben.
So baust du deine Antwort auf
- Nenn die zwei Regeln schlicht und kurz.
- Erklär den Slot-Mechanismus über die Aufrufreihenfolge als Grund.
- Beschreib, was tatsächlich kaputtgeht, wenn sich die Reihenfolge ändert.
- Sag, wie du bedingten Bedarf löst, ohne die Regeln zu brechen.
Beispielantwort
Zwei Regeln: Hooks gehören auf die oberste Ebene, und sie werden nur aus einer Komponente oder einem anderen Hook aufgerufen. Der Grund liegt in der Implementierung. React kennt die Namen deiner Hooks nicht, es hält eine Liste am Fiber und schiebt einen Cursor durch sie, während deine Funktion läuft. Der erste useState-Aufruf bekommt Slot eins, der zweite Slot zwei und so weiter. Packst du einen Hook in ein if, landet der Cursor bei manchen Renders eine Position daneben, und jeder Hook danach liest den State des vorherigen. Dann bekommst du bizarre Fehler, bei denen aus einem Boolean plötzlich eine Funktion wird. Wenn ich etwas wirklich bedingt brauche, rufe ich den Hook trotzdem immer auf und lasse den Hook selbst nichts tun, zum Beispiel über ein enabled-Flag an einem Query-Hook, oder ich ziehe die Verzweigung eine Ebene hoch, sodass die zwei Pfade getrennte Komponenten sind. Ich lasse die eslint-Regeln an und behandle eine Ausnahme als etwas, das einen Kommentar braucht, der genau erklärt, warum.
Steht dieses Vorstellungsgespräch bald an? GhostPilot hört bei deinem Live-Call mit, erkennt die Frage in dem Moment, in dem sie gestellt wird, und bringt dir eine strukturierte Antwort in Echtzeit auf den Bildschirm. Probier es im nächsten Mock aus, oder hol dir einen $29 Session Pass, kein Abo, für den Ernstfall.
So funktioniert esNachfragen, mit denen du rechnen solltest
- Wie gehst du mit einem Hook um, den du nur manchmal brauchst?
- Was fängt das eslint-Plugin tatsächlich ab, und was übersieht es?
- Wie würdest du einen Custom Hook schreiben, der zwei andere Hooks kombiniert?
Weitere Fragen für React-Entwickler
Dein Interviewer stellt seine eigene Version davon. Kopier deine echte Stellenbeschreibung in den kostenlosen Question Predictor und bekomm die 20 Fragen, die diese Rolle am wahrscheinlichsten stellt, samt dem, worauf jede wirklich abzielt.
Meine Fragen vorhersagen