0Pricing
React Academy · Lektion

Best Practices für Keys und Refs

Verwenden Sie stabile Keys, vermeiden Sie die Probleme von Index-Keys und arbeiten Sie mit Callback-Refs.

Best Practices für Keys und Refs ist eine kostenlose React Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des React Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.

Willkommen

In dieser Lektion lernen Sie, wie Sie Keys für Listen korrekt verwenden, warum der Array-Index als Key Fehler verursacht und wie Sie mit Callback-Refs und weitergereichten Refs arbeiten.

Warum Keys wichtig sind

React verwendet `key`-Props, um zu verfolgen, welche Elemente einer Liste zwischen Render-Vorgängen geändert, hinzugefügt oder entfernt wurden. Mit einem korrekten Key kann React vorhandene DOM-Knoten wiederverwenden; ein falscher Key verursacht unnötige Unmounts und Remounts.

Stabile eindeutige Keys

Der beste Key ist eine stabile, eindeutige ID aus Ihren Daten – etwa die ID einer Datenbankzeile oder eine UUID. Dieser Key muss nur unter den Geschwisterelementen eindeutig sein, nicht global auf der gesamten Seite.
users.map(user => (
  <UserCard key={user.id} user={user} />
))

Warum der Index als Key problematisch ist

Der Array-Index als Key funktioniert bei statischen Listen gut, verursacht aber Fehler in sortierten oder gefilterten Listen. Wenn Elemente ihre Reihenfolge ändern, ordnet React Komponenten anhand des Index zu und verwendet die falschen DOM-Knoten wieder. Dadurch werden Eingabewerte und Animationszustände verfälscht.
// Risky when list can reorder or filter
items.map((item, i) => <Row key={i} {...item} />)

Wann ein Index-Key akzeptabel ist

Ein Index als Key ist nur dann akzeptabel, wenn: (1) die Liste niemals neu sortiert oder gefiltert wird, (2) die Elemente keine stabile ID haben und (3) die Elemente keinen lokalen State besitzen (zum Beispiel Eingabewerte). Statische Anzeigelisten sind unproblematisch.

Stabile IDs erzeugen

Wenn Ihre Daten keine ID enthalten, erzeugen Sie eine, sobald Sie das Element erstellen (nicht während des Renderns). Sie können `crypto.randomUUID()` oder die Bibliothek `nanoid` verwenden.
const newItem = { id: crypto.randomUUID(), text: 'Buy milk' };

Grundlagen von useRef

`useRef` gibt ein veränderbares Objekt zurück, dessen Wert `.current` über Render-Vorgänge hinweg erhalten bleibt, ohne erneute Render-Vorgänge auszulösen. Es wird verwendet, um DOM-Referenzen und veränderbare Werte wie Timer-IDs zu speichern.
const inputRef = useRef(null);
<input ref={inputRef} />
// Access DOM node: inputRef.current.focus();

Callback-Refs

Statt ein Ref-Objekt zu übergeben, können Sie einen **Callback-Ref** übergeben – eine Funktion, die React beim Mount mit dem DOM-Knoten und beim Unmount mit `null` aufruft. So können Sie Logik genau dann einrichten, wenn der Knoten verfügbar wird.
function Input() {
  return (
    <input
      ref={node => {
        if (node) node.focus();
      }}
    />
  );
}

forwardRef für Komponenten-Refs

Funktionskomponenten akzeptieren `ref` nicht als gewöhnliche Prop. Umschließen Sie die Komponente mit `React.forwardRef`, damit übergeordnete Komponenten einen Ref an einen internen DOM-Knoten anhängen können.
const FancyInput = React.forwardRef((props, ref) => (
  <input ref={ref} className="fancy" {...props} />
));

// Parent
const inputRef = useRef(null);
<FancyInput ref={inputRef} />

useImperativeHandle

Wenn eine übergeordnete Komponente einen Ref auf ein untergeordnetes Element hält, können Sie mit `useImperativeHandle` genau steuern, was dieses Element nach außen gibt. So bleibt das interne DOM der untergeordneten Komponente verborgen, während eine klare imperative API bereitgestellt wird.
const Child = forwardRef((_, ref) => {
  const innerRef = useRef();
  useImperativeHandle(ref, () => ({
    focus: () => innerRef.current.focus(),
  }));
  return <input ref={innerRef} />;
});

Kurzer Test

Warum sollten Sie den Array-Index als Key in einer Liste vermeiden, deren Reihenfolge geändert werden kann?

Zusammenfassung

Verwenden Sie stabile Daten-IDs als Keys, vermeiden Sie Index-Keys in dynamischen Listen, verwenden Sie useRef für den Zugriff auf das DOM und veränderbare Werte, Callback-Refs für Logik bei Mount und Unmount sowie forwardRef, um Refs aus untergeordneten Komponenten bereitzustellen.

Als Nächstes

Nächste Lektion: **Ordnerstruktur und Namenskonventionen** – Sie organisieren ein React-Projekt mit funktionsbasierten Ordnern und einer einheitlichen Dateibenennung.

Häufig gestellte Fragen

Ist die Lektion „Best Practices für Keys und Refs“ kostenlos?

Ja — der vollständige Text von „Best Practices für Keys und Refs“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des React Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Best Practices für Keys und Refs“?

Verwenden Sie stabile Keys, vermeiden Sie die Probleme von Index-Keys und arbeiten Sie mit Callback-Refs. Du übst React Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um React Academy zu starten?

Keine Vorkenntnisse erforderlich. React Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Best Practices für Keys und Refs“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser React Academy-Lektion Code schreiben und ausführen?

Ja. Jede React Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Was StrictMode bewirkt
  2. Pure Components und Seiteneffekte beim Rendern vermeiden
  3. Best Practices für Keys und Refs
  4. Ordnerstruktur und Namenskonventionen
← Zurück zu React Academy