Вступить в клуб →
лёгкаявопросReact и управление состоянием

После добавления элемента список на экране не меняется

const [items, setItems] = useState([]);

function addItem(item) {
  items.push(item);
  setItems(items);
}

Кнопка «Добавить» вызывает addItem, данные в массиве действительно накапливаются, но список на экране остаётся пустым. Почему?

  • Метод добавления работает асинхронно, поэтому обновление состояния получает ещё пустой массив и на экран попадает старая версия списка.
  • Начальным значением состояния нельзя делать пустой массив, нужен null и проверка перед рендером.
  • В состояние положили ту же ссылку на массив; React сравнивает по ссылке и не видит изменения — нужен новый массив.
  • Обновлять состояние можно только внутри эффекта, иначе изменение не попадает в очередь рендера.

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела