Проверяет понимание асинхронности setState в React и почему состояние не обновляется мгновенно после вызова.
React использует асинхронное обновление состояния для повышения производительности. Вместо того чтобы перерисовывать компонент после каждого вызова setState, React собирает все изменения в один пакет (batching) и применяет их за один раз. Это позволяет избежать лишних перерисовок и улучшить отзывчивость интерфейса.
Когда вы вызываете setState, React не сразу изменяет state. Вместо этого он добавляет запрос на обновление в очередь. После завершения текущего обработчика событий (например, клика) React обрабатывает все накопленные запросы и обновляет состояние, вызывая повторный рендер компонента.
// Пример: состояние не обновляется сразу
function Counter() {
const [count, setCount] = useState(0);
const handleClick = () => {
setCount(count + 1);
console.log(count); // Выведет 0, а не 1
};
return <button onClick={handleClick}>{count}</button>;
}Если вам нужно выполнить действие после обновления состояния, используйте:
this.setState({ count: this.state.count + 1 }, () => console.log(this.state.count))useEffect(() => { console.log(count); }, [count]);setCount(prev => prev + 1);Асинхронность setState — это особенность React, направленная на оптимизацию. Понимание этого механизма помогает избежать ошибок при работе с состоянием и правильно использовать колбэки или эффекты для обработки обновлений.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию