제출 중 중복을 막는다
pending 상태에서 버튼을 비활성화하거나 같은 액션 중복 호출을 방지한다.
서버 오류를 필드에 연결한다
schema 검증 결과를 field별 메시지로 되돌려 사용자가 어디를 고칠지 알게 한다.
uncontrolled
HTML 기본 흐름
FormData로 서버에 보내기 쉽고 클라이언트 상태가 적다.
제출 시점 검증에 맞다.
controlled
즉시 반응
입력값을 React state로 관리해 미리보기와 조건부 UI에
유리하다.
렌더 비용을 본다.
pending
중복 방지
제출 중 표시와 비활성화를 통해 사용자가 반복 클릭하지 않게
한다.
낙관적 UI와도 연결된다.
server error
권위 검증
서버가 반환한 오류를 form state로 표시한다.
클라이언트 검증만 믿지 않는다.
중복 제출 · 오류 위치 · 초기값 점검
상태 분리
// draft: input value
// pending: submission in flight
// fieldErrors: validation result
// success: redirect or refresh