Interviewfrage für React-Entwickler

Warum braucht React einen Key an Listen-Items, und was geht tatsächlich kaputt, wenn du den Array-Index nimmst?

Worauf der Interviewer abzielt, wie du deine Antwort aufbaust und ein gesprochenes Beispiel zum Anpassen.

Kurzantwort

Keys sagen React, welches Element der neuen Liste welchem der alten entspricht, damit es DOM-Nodes und ihren State verschieben, behalten oder entfernen kann, statt rein nach Position zu paaren. Array-Indizes funktionieren nur bei statischen Listen. Werden Items umsortiert, vorne eingefügt oder gelöscht, ändert sich der Index eines Items, React wiederverwendet die falsche Node, und State wie Eingabewerte landet in der falschen Zeile.

Warum Interviewer das fragen

Sieht nach einer Anfängerfrage aus, aber die Antworten trennen die Spreu schnell vom Weizen. Die meisten sagen, Keys helfen der Performance, und hören da auf. Der Interviewer will hören, dass es bei Keys um Identität und den Erhalt von State geht, nicht nur um Tempo, und dass du den konkreten Fehlerfall mit Index-Keys benennen kannst. Es ist außerdem ein schneller Test, ob du je einen echten Listen-Bug debuggt oder nur eine Konsolenwarnung weggeräumt hast.

So baust du deine Antwort auf

  • Definier einen Key als Identität, nicht als Performance-Hinweis.
  • Erklär, wie der Diff alte und neue Children über den Key paart.
  • Gib den konkreten Index-Bug bei einer umsortierten oder gefilterten Liste.
  • Sag, was du als Key nimmst und was du vermeidest.

Beispielantwort

Gesprochenes Beispiel, erste Person

Ein Key ist Reacts Antwort auf die Frage: Ist das dasselbe Item, das ich letzten Render gesehen habe? Ohne Key paart es Children nach Position, wenn also eine Zeile umzieht, denkt React, der Inhalt hat sich geändert, und patcht die bestehende Node, statt sie zu verschieben. Mit einem stabilen Key weiß es, dass das Item umgezogen ist, behält DOM-Node und State und sortiert um. Die Index-Falle ist, dass ein Index die Position beschreibt, nicht das Item. Mir ist das bei einer Tabelle passiert, in der jede Zeile eine Checkbox und ein Notizfeld hatte. Lösch Zeile zwei, und jede Zeile darunter rutscht einen Index hoch, React paart die falschen Nodes, und plötzlich stehen fremde Notizen in deiner Zeile. Es sieht aus wie ein Datenbug und ist ein Key-Bug. Ich nehme deshalb, was immer an stabiler ID mit den Daten kommt, meistens die Datenbank-ID. Gibt es wirklich keine, erzeuge ich eine ID beim Anlegen des Items und nicht während des Renders, denn im Render erzeugt bekommst du bei jedem Durchgang einen neuen Key und mountest die ganze Liste neu.

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 es

Nachfragen, mit denen du rechnen solltest

  • Wann ist der Array-Index als Key tatsächlich in Ordnung?
  • Was passiert, wenn zwei Geschwister denselben Key haben?
  • Wie würdest du den State einer Komponente absichtlich über einen Key zurücksetzen?

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

Üb die harten Fragen, bevor sie gestellt werden

Trainier mit einem Live-Copiloten und geh dann vorbereitet rein. Ein $29 Session Pass bringt dich durch das Vorstellungsgespräch, ohne Abo und ohne Bindung.

GhostPilot holen