0Pricing
React Academy · Lektion

Selectoren und das Vermeiden unnötiger erneuter Renderings

Extrahieren Sie mit Selectoren bestimmte State-Slices, damit Components nur bei Bedarf erneut gerendert werden.

Selectoren und das Vermeiden unnötiger erneuter Renderings 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 verwenden Sie Zustand-Selektoren, damit Komponenten nur die benötigten Zustandsbereiche abonnieren. So verhindern Sie unnötige erneute Renderings, wenn sich andere Teile des Stores ändern.

Das Problem des Standardselektors

Wenn Sie den Store-Hook ohne Selektor aufrufen, wird das gesamte Store-Objekt zurückgegeben. Die Komponente wird bei JEDEM Store-Update erneut gerendert, auch wenn sich ein nicht relevanter Zustand ändert.
// Bad: re-renders on every store change
const store = useAppStore();
return <p>{store.user.name}</p>;

Einen Selektor verwenden

Übergeben Sie dem Store-Hook eine Selektorfunktion. Die Komponente wird nur dann erneut gerendert, wenn sich der Rückgabewert des Selektors ändert.
// Good: re-renders only when user.name changes
const name = useAppStore(s => s.user.name);
return <p>{name}</p>;

Prüfung der Referenzgleichheit

Zustand verwendet standardmäßig strikte Gleichheit (===). Wenn Ihr Selektor bei jedem Aufruf ein neues Objekt oder Array zurückgibt, wird die Komponente erneut gerendert, selbst wenn der Inhalt gleich bleibt.
// Creates a new object every time — always re-renders!
const info = useStore(s => ({ id: s.id, name: s.name }));

Mit flacher Gleichheit korrigieren

Importieren Sie `shallow` aus zustand und übergeben Sie es als Gleichheitsfunktion, um erneute Renderings zu vermeiden, wenn der Objektinhalt gleich bleibt.
import { shallow } from 'zustand/shallow';

const info = useAppStore(
  s => ({ id: s.id, name: s.name }),
  shallow // compare by content, not reference
);

Mehrere Werte auswählen

Verwenden Sie das Muster mit flacher Gleichheit, um mehrere Werte gleichzeitig auszuwählen, ohne unnötige erneute Renderings zu verursachen.
const { items, loading } = useCartStore(
  s => ({ items: s.items, loading: s.loading }),
  shallow
);

Stabile Action-Referenzen

Actions (Funktionen) in Zustand haben stabile Referenzen – sie ändern sich bei Zustandsaktualisierungen nicht. Sie können sie ohne shallow auswählen, ohne erneute Renderings zu verursachen.
// Actions are always stable — no shallow needed
const addToCart = useCartStore(s => s.addToCart);

useShallow-Hilfsfunktion (Zustand v5+)

Zustand v5 stellt die useShallow-Hilfsfunktion bereit. Sie versieht den Selektor automatisch mit flacher Gleichheit und macht den Code übersichtlicher.
import { useShallow } from 'zustand/react/shallow';

const { items, loading } = useCartStore(
  useShallow(s => ({ items: s.items, loading: s.loading }))
);

Selektoren kombinieren

Leiten Sie berechnete Werte innerhalb von Selektoren ab, statt abgeleiteten Zustand im Store zu speichern. Berechnen Sie Summen, gefilterte Listen oder formatierte Zeichenfolgen im Selektor.
const totalPrice = useCartStore(
  s => s.items.reduce((sum, item) => sum + item.price, 0)
);

Erneute Zustand-Renderings profilieren

Verwenden Sie den React-DevTools-Profiler, um die Funktionsweise Ihrer Selektoren zu überprüfen. Fügen Sie dem Store ein nicht relevantes Element hinzu und prüfen Sie anschließend, dass die Komponente, die nur den Namensselektor verwendet, NICHT im Commit-Flamegraphen erscheint.

Kurzer Check

Warum müssen Sie flache Gleichheit verwenden, wenn ein Zustand-Selektor ein Objekt zurückgibt?

Zusammenfassung

Verwenden Sie immer spezifische Selektoren. Verwenden Sie flache Gleichheit, wenn Sie mehrere Werte als Objekt auswählen. Leiten Sie berechnete Werte innerhalb von Selektoren ab. Actions haben stabile Referenzen und benötigen shallow nicht.

Als Nächstes

Nächste Lektion: **Zustand mit der Persist-Middleware speichern** — Sie werden den Zustand von Zustand mithilfe der Persist-Middleware mit localStorage synchronisieren.

Häufig gestellte Fragen

Ist die Lektion „Selectoren und das Vermeiden unnötiger erneuter Renderings“ kostenlos?

Ja — der vollständige Text von „Selectoren und das Vermeiden unnötiger erneuter Renderings“ 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 „Selectoren und das Vermeiden unnötiger erneuter Renderings“?

Extrahieren Sie mit Selectoren bestimmte State-Slices, damit Components nur bei Bedarf erneut gerendert werden. 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 „Selectoren und das Vermeiden unnötiger erneuter Renderings“?

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. Ihren ersten Zustand-Store erstellen
  2. Selectoren und das Vermeiden unnötiger erneuter Renderings
  3. State mit der Persist-Middleware speichern
  4. Zustand DevTools und Stores testen
← Zurück zu React Academy