로그인 페이지와 회원가입 페이지를 useForm을 사용해서 유효성 검사 기능을 추가해봤다. 저번 프로젝트에서는 useState
를 참고하여 유효성 검사 기능을 구현했는데 이번에는 useForm
을 사용해서 유효성 검사 기능을 구현해봤다.
React 라이브러리에서 제공하는 커스텀 훅(custom hook) 중 하나로, HTML 폼(form)을 다루는데 도움을 주는 훅이다. Useform
은 폼에 입력된 데이터를 추적하고, 폼 유효성 검사(validation)를 수행하며, 폼 전송(submit)을 처리할 수 있다. 이를 통해 개발자는 더 쉽게 폼을 다룰 수 있고, 코드의 가독성과 유지보수성을 높일 수 있다. Useform은 리액트 어플리케이션에서 폼 관련 로직을 추상화하고, 재사용성을 높여준다.
프리프로젝트 때 useStaete
를 사용을 했는데 useState
로 상태관리며 유효성검사며 코드들이 많아져 가독성들이 많이 떨어졌었다.
그래서 이것들을 해결할 방법을 찾던중 useForm
을 알게 됐다.
useForm
은 일일이 useState
를 지정해줄 필요 없이, register
로 등록만 해둔다면, 유효성 검사까지 마친 완벽히 정제된 데이터를 받아볼 수 있어서 많이 편해서 useState
대신 useForm
을 사용하게 됐다.
$ npm install react-hook-form
function MyForm() {
const { register, handleSubmit, formState: { errors } } = useForm();
<input
className="SignupInput"
name="username"
type="text"
placeholder="username"
{...register('username', {
required: true,
minLength: {
value: 2,
message: '2글자 이상 입력해주세요',
},
})}
/>
{errors.username?.type === 'required' && '닉네임을 입력해주세요'}
{errors.username?.type === 'minLength' && errors.username.message}
register
는 사용할 때 ...register("사용할이름")
이 형식으로 이름을 저장을 해놓을 수 있다. 이 이름을 나중에 꺼내와서 값을 불러올 수 있다.errors
객체를 사용하기 위해서는 먼저 useForm hook
에서 formState
객체를 가져와야 한다. errors.username
및 errors.email
을 사용하여 각 필드의 오류 상태를 확인한다.