목록 보기
React Form 컴포넌트 개발기
프론트엔드

React Form 컴포넌트 개발기

인프런
인프런
2022년 7월 19일

두줄요약

대규모 React 폼에서 렌더링 성능과 상태 분산 문제를 해결하려는 과정을 정리했습니다. 여러 상태 관리 방식을 비교하고 react-hook-form 도입 방향을 결정했습니다.

문제 상황

  • 최대 700여 개 입력창을 포함한 이력서 폼에서 change 이벤트마다 발생하는 리렌더링과 UX 저하 우려
  • 유효성 검사, 동적 추가·삭제, 순서 변경이 필요한 복잡한 폼 요구사항

구조와 흐름

  • 초기 useState 기반 단일 profile 상태 관리와 전체 폼 리렌더링 문제
  • Form Control별 상태 분리와 비제어 컴포넌트·form element 직접 접근을 통한 렌더링 감소
  • 입력값·유효성·동적 폼 구조·API 요청 데이터의 분산 관리로 인한 복잡도 증가

트레이드오프

  • Redux의 선택적 구독 장점과 폼 로컬 상태의 전역 store 관리 및 보일러플레이트 부담
  • MobX의 유연성과 팀 공통 아키텍처·학습 숙련도 부족 우려
  • React.memo 기반 단일 상태 관리의 단순성과 context·props 메모이제이션 한계

선택 이유

  • 폼 데이터의 단일 출처 관리와 불필요한 렌더링 최소화 필요성
  • 여러 방식 검토 후 react-hook-form 도입 방향 결정

다음 읽기

#React 주제를 이어서 읽기

react-hook-form을 선택한 이유와 적용 과정

분산된 폼 상태와 렌더링 문제를 react-hook-form으로 단일화한 리팩토링 경험을 공유했습니다. Controller·useFieldArray·class-validator 연계 시 유의점을 설명합니다.

인프런
인프런
프론트엔드

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...