⭐ react-hook-form?
로그인, 회원가입 등 form을 사용해서 기능을 구현해 본 경험이 다들 있을 것이다.
useState도 계속 사용해야 하고, onChange로 input 값을 확인하는 등 ... 번거롭고 은근 까다로운 작업이다.
이런 작업들을 react-hook-form 라이브러리를 사용하면 간단하고 효율적으로 할 수 있다!
공식문서는 아래 링크 첨부!
https://react-hook-form.com/
⭐ 설치방법
npm install react-hook-form
or
yarn add react-hook-form
위의 명령어로 설치해주고
import { useForm } from "react-hook-form";
사용하고 싶은 곳에서 import 해주면 됨!
⭐ useForm 객체
react-hook-form에서 제공하는 hook 중에 하나로 여러 함수를 가지고 있는 객체이다.
내가 사용했던 함수 위주로 적을 예정이다.
구조분해할당을 통해 꺼내서 사용하면 된다.
const {
register,
handleSubmit,
watch,
formState: { errors },
} = useForm();
⭐ register 사용 방법
register 함수는 두개의 인자를 전달할 수 있는데,
첫 번째 인자는 input의 id와 같은 역할을 한다.
즉, 유일한 값이 전달되어야 한다.
두 번째 인자는 유효성 검사를 위한 코드를 넣어주는데, required, pattern, minLength 같은 검증을 할 수 있고,
검증을 통과하지 못하면 보여줄 오류 메시지도 설정할 수 있다.
<div>
<label>이름</label>
<input
type="text"
placeholder="이름을 입력하세요."
{...register("username", {
required: "빈 칸 없이 작성해주세요.",
minLength: {
value: 2,
message: "두 글자 이상 입력해주세요.",
},
})}
/>
<div className="error-message">
{errors.username && errors.username.message}
</div>
</div>
이름은 필수 입력 항목이므로, required에 적어주었다.
그리고 2글자 이상 작성하도록 하기 위해 minLength의 value를 2로 정했다!
⭐ watch 사용 방법
특정 input 값을 관찰(watch)하고, 값이 변할 때마다 그 값을 반환한다.
<div>
<label>비밀번호</label>
<input
type="password"
placeholder="비밀번호를 입력하세요."
{...register("password", {
required: "빈 칸 없이 작성해주세요.",
minLength: {
value: 6,
message: "비밀번호는 최소 6자 이상이어야 합니다.",
},
})}
/>
<div className="error-message">
{errors.password && errors.password.message}
</div>
</div>
{/* 비밀번호 일치 확인 */}
<div>
<label>비밀번호 확인</label>
<input
type="password"
placeholder="비밀번호를 입력하세요."
{...register("passwordChk", {
required: "빈 칸 없이 작성해주세요.",
validate: (value) =>
value === watch("password") || "비밀번호가 일치하지 않습니다.",
})}
/>
<div className="error-message">
{errors.passwordChk && errors.passwordChk.message}
</div>
비밀번호 필드와 비밀번호 확인 필드의 입력 값이 같은지 확인하기 위해 watch를 사용했다.
⭐ handleSubmit 사용 방법
form을 submit 할 때, 사용하는 함수이다.
event.preventDefault()를 사용하지 않아도, handleSubmit을 사용하면 제출해도 새로고침 현상이 일어나지 않는다.
제출을 했을 때, form이 유효하다면 onValid가 실행되고, 유효하지 않다면 onInvalid가 실행된다.
<form onSubmit={handleSubmit(onSubmit)}>
form 태그 안에 적어주면 된다.
유효성 검사를 통과해야만 제출이 된다.
⭐ formState 사용 방법
formState의 errors를 통해 간단하게 error를 검출할 수 있다.
<div className="error-message">
{errors.username && errors.username.message}
</div>
위의 errors가 formState의 errors를 사용한 예시이다.
'React' 카테고리의 다른 글
[React] 상태관리 라이브러리 Recoil (0) | 2024.03.29 |
---|---|
[React]Tailwind CSS 설치하기 (0) | 2024.03.27 |
[React]Redux-Logger (0) | 2024.02.08 |
[React]Redux 사용방법 (1) | 2024.02.08 |
[React]React Redux란? (1) | 2024.02.02 |