저는 react-hook-form을 사용하여 textarea를 통해 사용자 입력 값을 처리하고 있습니다. 이를 통해 제어 컴포넌트와 비제어 컴포넌트의 장점을 살리며, 실시간 유효성 검사를 수행하고 리렌더링을 최소화하여 성능을 개선하고자 했습니다.
React Hook Form에 대한 자세한 정보는 공식문서를 참조해보세요. React Hook Form 공식문서
저는 실시간 글자수를 감지하기 위해 react-hook-form의 watch 메서드를 활용하여 글자수를 파악했습니다.
watch 메서드를 사용할 경우 Form 전체가 리렌더링 됩니다.
제가 진행하는 프로젝트는 하나의 Form안에 input 3개, textArea 3개로 구성
되어있습니다.
따라서 1글자당 총 6번의 리렌더링이 발생합니다.
모든 폼 컴포넌트를 리렌더링합니다
반면, useWatch 함수는 독립적으로 리렌더링을 합니다.
따라서 위 사진과 같이 독립적으로 값이 변경되는 하나의 TextArea만 리렌더링 하게 됩니다.
제가 진행하는 프로젝트는 하나의 Form안에 input 3개, textArea 3개로 구성
되어있습니다.
총 3개의 TextArea를 각각 1000자씩 입력할 경우
최대 15,000번의 리렌더링을 줄일 수 있으며, 약 84%의 리렌더링을 줄일 수 있었습니다.