React · Junior · Frage 14 von 75

Warum wurde die Komponente nicht neu gerendert?

const [user, setUser] = useState({ name: "Ann" });

function rename() {
  user.name = "Bob";
  setUser(user);
}
Antwort zeigen

Richtige Antwort: Das Objekt wurde mutiert, die Referenz ist also dieselbe

Erklärung

React vergleicht den neuen Wert mit dem alten per Object.is. Es ist dasselbe Objekt, also wird das Update übersprungen. Man muss ein neues Objekt erzeugen: setUser({ ...user, name: "Bob" }). Mutation macht auch Optimierungen wie memo kaputt.

Zum Weiterlesen

Fehler in der Frage

React · Junior · Frage 14

Teste dich selbst

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

Diesen Test machen