값 소유 결정
입력 중 화면이 즉시 상태를 사용해야 하는지, 제출 때만 읽어도 되는지 판단한다.
필요 이상으로 제어하면 렌더 비용이 늘 수 있다controlled input은 value를 React state가 소유하고 onChange로 갱신한다. uncontrolled input은 DOM이 값을 들고 React는 ref로 필요할 때 읽는다. 검증, IME 입력, 파일 입력, 대형 폼 성능에 따라 두 방식의 선택이 달라진다.
입력 중 화면이 즉시 상태를 사용해야 하는지, 제출 때만 읽어도 되는지 판단한다.
필요 이상으로 제어하면 렌더 비용이 늘 수 있다value와 onChange를 연결해 React state가 항상 화면 값을 반영하게 한다.
value만 주고 onChange가 없으면 입력이 잠긴다defaultValue로 초기값을 주고 제출이나 blur 시 ref.current.value를 읽는다.
defaultValue 변경은 기존 DOM 값을 덮지 않는다file input은 보안상 value를 직접 제어할 수 없어 ref와 FileList 흐름을 쓴다.
파일 선택은 DOM 소유에 가깝다한글 조합 입력, 대형 폼, 실시간 검증에서 입력 지연과 조합 깨짐을 테스트한다.
입력 경험이 최종 기준이다