React · Junior · Запитання 14 з 75

Чому компонент не перемалювався?

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

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

Пояснення

React порівнює нове значення зі старим через Object.is. Це той самий об'єкт, тому оновлення пропускається. Треба створити новий об'єкт: setUser({ ...user, name: "Bob" }). Мутація ще й ламає оптимізації на кшталт memo.

Де почитати

Помилка в запитанні

React · Junior · запитання 14

Перевірте себе

Пройдіть тест React · Junior: запитання й варіанти перемішуються, а наприкінці - розбір помилок.

Пройти цей тест