После добавления элемента список на экране не меняется
const [items, setItems] = useState([]);
function addItem(item) {
items.push(item);
setItems(items);
}
Кнопка «Добавить» вызывает addItem, данные в массиве действительно накапливаются, но список на экране остаётся пустым. Почему?
- Метод добавления работает асинхронно, поэтому обновление состояния получает ещё пустой массив и на экран попадает старая версия списка.
- Начальным значением состояния нельзя делать пустой массив, нужен null и проверка перед рендером.
- В состояние положили ту же ссылку на массив; React сравнивает по ссылке и не видит изменения — нужен новый массив.
- Обновлять состояние можно только внутри эффекта, иначе изменение не попадает в очередь рендера.
