React · Middle · Frage 40 von 75

Warum löst dieser Selektor bei jeder Action im Store ein Re-Rendering aus?

const done = useSelector(state =>
  state.todos.filter(t => t.done)
);
Antwort zeigen

Richtige Antwort: filter gibt jedes Mal ein neues Array zurück

Erklärung

useSelector läuft nach jedem Dispatch und vergleicht das Ergebnis per Referenz. Ein neues Array ist nie gleich dem vorherigen. Die Lösung ist ein memoisierter Selektor mit createSelector, der dasselbe Array zurückgibt, solange sich state.todos nicht geändert hat.

Zum Weiterlesen

Fehler in der Frage

React · Middle · Frage 40

Teste dich selbst

Mach den Test React · Middle: Fragen und Antworten werden gemischt, und am Ende wartet eine Übersicht der Fehler.

Diesen Test machen