요즘 맡고 있는 프로젝트에서 🚀로그인 & 회원가입 부분을 담당하고 있다.
React는 처음인데다 이전에 야매로 만들었던 관통 프로젝트와는 다르게 토큰도 access token과 refresh token을 사용하고, 회원가입시 메일로 인증과정을 거치는 나름 업그레이드 버전 회원가입이다.
(그리고 SNS 회원가입 & 로그인도 있다.)
앞으로 올라오는 게시글 시리즈는 리액트 초보의 로그인 & 회원가입 고군분투 과정이다.
나같은 React Newbie들에게 이 글을 바친다.
1. React-hook-form 이 무엇이냐
리액트에서 회원가입, 정보기입 등 다양한 form을 사용할 일이 많을 것이다.
그때마다 물론 useState 같은 hook을 사용하여 상태관리를 하고, 유효성 검사용 함수를 만들어서 검사를 진행하고 유효성 검사에 따른 에러메세지를 줄 수 있겠다.
(리액트 만으로 form 을 다루고 싶다면 아래 블로그를 참고해보자.)

하지만, 우리는 거인의 어깨 위에 서는 개발자 아니겠는가?
이미 이것을 한 큐에 해결 해 줄 패키지(라이브러리) 가 준비되어있다. 이말이다.

우리 서비스만 해도 회원가입 시 받는 정보가 이메일, 아이디, 닉네임, 전화번호, 비밀번호(그리고 비밀번호 확인)이다. 각각에 대하여 관리할 state가 늘어나고 각각 처리해 줄 handler, validation function, 그리고 error Message까지 벌써 길어질 코드에 눈 앞이 캄캄해지고. 어지럽고. 도망치고 싶다.
react-hook-form
은 이런 고민을 awsome 하게, cool하게 만들어준다.
- register 함수를 통해 입력값 등록 단순화
- handleSubmit 함수를 통해 preventDefault와 onSubmit시에 함수 인자로 form값을 전달한다
그리고 비제어 컴포넌트를 활용하기 때문에 ref
에서 register
함수(위의 ‘1’에서 썼던 그 함수)가 실행된다고 한다.
setState
를 사용했다면 비제어 컴포넌트에서는 ref
를 이용해서 값을 얻는다.⇒ 즉 React 컴포넌트 안에서 폼 데이터가 다뤄지는 것이 아니라 DOM 자체에서 다뤄진다는 뜻이다.
⇒ 이 방식은 사용자가 타이핑 하거나 값을 변경할 때 리랜더링을 줄여준다고 한다. ⇒ 그리고 제어 컴포넌트가 아니라 마운트 되는 속도도 빠르다고 한다.
제어 컴포넌트 vs 비제어 컴포넌트에 대하여 참고할만한 글

이 글을 읽고 나면 뭐야.. 비제어 컴포넌트 쓰면 유효성 검사는 어떻게 해요? 란 의문이 들었는데,
react-hook-form
도 다 생각이 있더라.
한 페이지에 여러 form이 존재할 경우 더욱 유용한 것 같다.
(이 부분은 아직 리액트에 대한 이해도가 낮아서 정확히 이유는 모르겠지만, 구글링한 결과 react-hook-form
을 사용하여 리팩토링한 사례를 보면 그런갑다 하고 이해중이다.)
Uploaded by N2T