동기적이라면?
setCount(count + 1);
console.log(count); // 만약 동기라면? 새로운 값이 찍혀야 함
하지만 실제로는 여전히 이전 값이 찍힌다. 이유는 React가 setState를 즉시 반영하지 않고, 업데이트 요청을 큐에 쌓기 때문이다.
setState()
호출 → 업데이트 큐(update queue) 에 할 일 기록즉, setState
는 곧바로 값을 바꾸지 않고, 렌더링 예약 역할만 함
React는 효율을 위해 여러 상태 업데이트를 한 번에 합쳐서 처리한다.
setCount(count + 1);
setCount(count + 1);
+1
함수형 업데이트는 항상 최신 상태(prev) 를 기준으로 계산하기 때문에 안전하다.
setCount(prev => prev + 1);
setCount(prev => prev + 1); // ✅ 최종적으로 +2 됨
React는 큐를 처리할 때 prev
를 순차적으로 업데이트하므로 원하는 결과가 나온다.
setState
/setCount
는 즉시 값이 변하지 않음