객체 상태
`name` 속성으로 필드를 구분하고 하나의 `formData` 객체에 값을 모읍니다.
필드 수, 검증 규칙, 제출 흐름이 늘어날수록 상태를 어디에 모을지 단계적으로 결정합니다.
`name` 속성으로 필드를 구분하고 하나의 `formData` 객체에 값을 모읍니다.
변경, 오류 설정, 초기화처럼 의미가 다른 전이를 액션으로 분리합니다.
`values`, `errors`, `handleSubmit`을 훅으로 묶어 폼마다 반복되는 코드를 줄입니다.
동적 필드, 비동기 검증, 렌더링 최적화가 커지면 검증된 도구로 이동합니다.
비밀번호 확인, 국가별 주소 입력처럼 한 필드가 다른 필드 규칙을 바꿉니다.
값뿐 아니라 오류, 제출 중, 서버 오류까지 함께 추적해야 합니다.
화면 코드보다 상태 전환 코드가 많아지면 추상화 시점입니다.
복잡한 폼 관리는 “입력값을 저장하는 법”보다 “변경, 검증, 제출을 예측 가능한 흐름으로 나누는 법”에 가깝습니다.