useState 원인 분류

상태 버그는 이전 값, 참조, 초기 비용을 나눠서 본다

`useState` 문제는 대부분 오래된 값 참조, 직접 변경, 비싼 초기 계산 중 하나에서 시작한다. 증상별로 고칠 패턴을 바로 연결한다.

1

연속 클릭 결과가 부족하다

같은 렌더의 count를 여러 번 읽고 있다면 함수형 업데이트로 바꾼다.

prev => next
2

객체를 바꿨는데 안 보인다

기존 객체를 직접 수정하면 참조가 그대로라 렌더링이 누락될 수 있다.

spread · map · filter
3

렌더마다 초기 계산이 돈다

초기값 계산 함수가 무겁다면 함수 자체를 넘겨 첫 마운트 때만 실행한다.

lazy initialization

이전 값 기반

setCount(prev => prev + 1)로 업데이트 큐를 안전하게 누적한다.

새 참조 생성

객체와 배열은 변경된 부분만 새 객체로 교체하고 나머지는 복사한다.

초기화 분리

초기 데이터 읽기와 계산을 렌더 본문에서 분리해 반복 비용을 줄인다.