0Pricing
React Academy · Lektion

Pure Components und Seiteneffekte beim Rendern vermeiden

Schreiben Sie Render-Funktionen ohne Mutationen und externe Lesezugriffe.

Pure Components und Seiteneffekte beim Rendern vermeiden ist eine kostenlose React Academy-Lektion auf CoddyKit. Dies ist Lektion 2 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, was eine pure Komponente in React bedeutet, warum Render-Funktionen frei von Seiteneffekten sein müssen und wie Sie häufige Verletzungen der Purity erkennen und beheben.

Was ist eine pure Funktion?

Eine pure Funktion gibt für dieselben Eingaben immer dieselbe Ausgabe zurück und verursacht keine beobachtbaren Seiteneffekte. React erwartet, dass Ihre Komponentenfunktion pure ist: Bei denselben Props und demselben State sollte sie immer dasselbe JSX zurückgeben.

Warum Purity in React wichtig ist

React kann Ihre Komponente mehrfach aufrufen (StrictMode, nebenläufige Funktionen und serverseitiges Rendern). Wenn Ihr Render-Vorgang Seiteneffekte wie API-Aufrufe, DOM-Änderungen oder Schreibzugriffe auf globale Variablen enthält, werden diese Effekte unvorhersehbar mehrfach ausgeführt.

Häufige Verletzung der Purity: Externen State verändern

Verändern Sie niemals Variablen, die außerhalb der Komponente definiert sind, während des Renderns. Mutationen sind in Event-Handlern oder useEffect in Ordnung, aber nicht während des Renderns.
let totalRenders = 0; // external
function Counter() {
  totalRenders++; // BAD: side effect in render
  return <p>{totalRenders}</p>;
}

Häufige Verletzung der Purity: Props verändern

Verändern Sie niemals das Props-Objekt innerhalb einer Komponente. Props sind schreibgeschützt. Wenn Sie eine modifizierte Version benötigen, erstellen Sie eine neue Variable.
// Bad
function Badge({ user }) {
  user.name = user.name.toUpperCase(); // mutates prop!
  return <p>{user.name}</p>;
}

// Good
function Badge({ user }) {
  const displayName = user.name.toUpperCase();
  return <p>{displayName}</p>;
}

Häufige Verletzung der Purity: Random oder Date beim Rendern verwenden

Der direkte Aufruf von `Math.random()` oder `Date.now()` beim Rendern erzeugt bei jedem Aufruf andere Werte und verletzt damit die Purity. Verschieben Sie diese Aufrufe in State-Initialisierungen oder useEffect.
// Bad
function Token() {
  const id = Math.random(); // different every render!
  return <p>{id}</p>;
}

// Good
function Token() {
  const [id] = useState(() => Math.random());
  return <p>{id}</p>;
}

API-Aufrufe gehören in useEffect

Daten direkt im Funktionsrumpf der Komponente abzurufen (nicht in useEffect) ist eine Verletzung der Purity – der Aufruf wird bei jedem Render-Vorgang ausgelöst. Verschieben Sie fetch-Aufrufe immer in useEffect und verwenden Sie geeignete Abhängigkeiten.
// Bad
function Profile({ id }) {
  fetch('/api/user/' + id); // runs on every render!
  return <div />;
}

// Good
useEffect(() => {
  fetch('/api/user/' + id).then(/*...*/);
}, [id]);

Lokale Mutationen sind unproblematisch

Objekte oder Arrays zu erstellen und zu verändern, die *innerhalb* desselben Render-Aufrufs erstellt wurden, ist vollkommen unproblematisch – niemand sonst kann sie beobachten. Dies wird als lokale Mutation bezeichnet.
function List({ items }) {
  const sorted = [...items]; // new array
  sorted.sort();             // mutating a local copy: OK
  return sorted.map(i => <li key={i}>{i}</li>);
}

Strict Mode verwenden, um Verletzungen der Purity zu finden

React StrictMode ruft Ihre Komponente in der Entwicklungsumgebung zweimal auf. Wenn Ihre Benutzeroberfläche zwischen den beiden Aufrufen nicht konsistent ist oder Sie doppelte Seiteneffekte beobachten, ist Ihr Render-Vorgang nicht pure. Beheben Sie die Verletzung, bis der doppelte Aufruf folgenlos bleibt.

Pure Komponenten und React.memo

Wenn eine Komponente pure ist (dieselben Props → dieselbe Ausgabe), können Sie sie mit `React.memo` umschließen. Dadurch weiß React, dass es einen erneuten Render-Vorgang überspringen kann, wenn sich die Props nicht geändert haben, was die Performance verbessert.
const Pure = React.memo(function Pure({ value }) {
  return <p>{value}</p>;
});

Kurzer Test

Welcher der folgenden Seiteneffekte darf direkt in der Render-Funktion einer React-Komponente ausgeführt werden?

Zusammenfassung

Pure Komponenten geben für dieselben Eingaben immer dasselbe JSX zurück. Vermeiden Sie es, Props oder externe Variablen beim Rendern zu verändern, verwenden Sie useEffect für Seiteneffekte und verlassen Sie sich auf StrictMode, um Verletzungen zu erkennen.

Als Nächstes

Nächste Lektion: **Best Practices für Keys und Refs** – Sie verwenden stabile Keys korrekt, vermeiden die Falle von Index-Keys und arbeiten mit Callback-Refs.

Häufig gestellte Fragen

Ist die Lektion „Pure Components und Seiteneffekte beim Rendern vermeiden“ kostenlos?

Ja — der vollständige Text von „Pure Components und Seiteneffekte beim Rendern vermeiden“ 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 „Pure Components und Seiteneffekte beim Rendern vermeiden“?

Schreiben Sie Render-Funktionen ohne Mutationen und externe Lesezugriffe. 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 2 von 4.

Wie lange dauert die Lektion „Pure Components und Seiteneffekte beim Rendern vermeiden“?

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