초기 상태
value와 error를 비워두되 사용자가 보기 전 오류를 바로 노출할지 결정한다.
처음부터 빨간 화면이면 부담이 크다검증 함수가 true나 false를 반환하는 것만으로 폼 품질이 정해지지 않는다. 사용자가 아직 건드리지 않은 필드, 수정했지만 제출하지 않은 필드, 서버에서 거부된 값, 비동기 중복 확인을 다른 상태로 나누어 표시해야 한다.
value와 error를 비워두되 사용자가 보기 전 오류를 바로 노출할지 결정한다.
처음부터 빨간 화면이면 부담이 크다onChange에서는 형식 힌트나 즉시 막아야 하는 값만 가볍게 확인한다.
무거운 검증은 입력 지연을 만든다onBlur에서 touched를 표시하고 필수값, 길이, 형식 오류를 보여준다.
건드린 필드만 오류를 보여주기 좋다onSubmit에서 전체 필드를 다시 확인하고 pending, success, server error 상태를 분리한다.
서버 검증은 반드시 남아야 한다입력과 오류 메시지를 aria-describedby로 연결해 보조기술도 읽을 수 있게 한다.
시각적 오류만으로는 부족하다