React · Junior · Pytanie 14 z 75

Dlaczego komponent się nie przerenderował?

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

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

Wyjaśnienie

React porównuje nową wartość ze starą przez Object.is. To ten sam obiekt, więc aktualizacja jest pomijana. Trzeba utworzyć nowy obiekt: setUser({ ...user, name: "Bob" }). Mutacja psuje też optymalizacje typu memo.

Do poczytania

Błąd w pytaniu

React · Junior · pytanie 14

Sprawdź się

Rozwiąż test React · Junior: pytania i odpowiedzi są tasowane, a na końcu czeka przegląd błędów.

Rozwiąż ten test