끄적이는 개발노트
react-hook-form 사용법(2) 본문
지난 포스트에서는 react-hook-form 기본 설정을 알아보았다.
이번 포스트에서는 react-hook-form에서 자주 사용되는 기능들에 대해 해당하느 부분의 코드를 살펴보며 알아본다.
1. 필수값
<input
type="text"
value={value}
{...register("inputName", {
required: true
// required 에 따로 에러 메세지를 원하는 경우
// required: {
// value: true,
// message: "필수 입력사항입니다.",
// },
})}
기본적으로 input에 register를 적어주며, "inputName"에 해당하는 부분이 input 태그의 name에 해당한다.
단순히 required: true 만을 적고 에러 메세지를 설정해도 되지만, 여러 유효성 검사 조건이 추가될 경우, 그에 해당하는 에러 메세지를 미리 설정해주는 것이 편리하다.
2. 패턴(정규식) 검사
<input
type="text"
value={value}
{...register("inputName", {
required: { value: true, message: "필수 입력사항입니다." },
pattern: {
value: /^[a-zA-Z]*$/,
message: "형식에 맞게 입력하세요.",
},
})}
위와 같이 패턴, 즉 input 내용의 정규식 검사가 필요할 경우, pattern을 활용하면 된다.
value에는 검증하고자 하는 정규식(위 코드에서는 영어만 사용가능한 정규식)을,
message에는 마찬가지로 에러 메세지를 입력한다.
3. Custom 검사
const {
...
watch,
...
} = useForm();
...
<input
type="password"
value={password}
{...register("password", {
required: { value: true, message: "필수 입력사항입니다." },
})}
<input
type="password"
value={passwordCheck}
{...register("passwordCheck", {
required: { value: true, message: "필수 입력사항입니다." },
validate: (value: string) => value === watch("password"),
})}
본인이 원하는 조건으로 유효성 검증을 진행하는 방법이다.
validate를 활용하면 되는데 이 때, value는 현재 입력하는 input의 e.target.value이고 => return 값에 조건을 적어주면 된다.
위의 코드는 정말 단순한 비밀번호 input과 비밀번호 재입력 input 이다.
react-hook-form의 watch 메소드를 사용하여 name이 password 인 input의 value를 가져오고, passwordCheck의 value와 비교하는 방식이다.
4. 에러메세지 출력
{errors.inputName?.type === "required" && (
<p>
{errors.inputName.message}
</p>
)}
에러 메세지를 표출하고자 하는 부분에 위 코드를 작성하면 된다.
위 코드를 살펴보면
- erros 뒤에 string(inputName)을 통해 어떤 input 태그의 에러를 조회할지 설정한다.
- 그에 해당하는 type(ex. required, pattern, validate ...) 을 조회한다.
- 해당하는 name과 타입에 지정해준 메세지를 출력한다.
위와 같이 메세지를 출력하면 여러 type(유효성 조건)들을 지정해줘도 메세지는 하나만 입력해도 각각 매칭되어 출력되기 때문에 편리하다고 위에서 언급한 것이다.
5. 그 외 Tip
const {
register,
handleSubmit,
watch,
setError,
clearErrors,
setValue,
formState: { errors },
} = useForm({ criteriaMode: "all", mode: "onChange" });
위 메소드들이 직접 react-hook-form을 사용할 때 사용한 것들이다.
- setError : 원하는 input 태그에 에러 type을 지정하여 에러를 발생시킨다.
- clearErrors : 원하는 input 태그에 발생한 에러들을 제거한다.
- setValue : 원하는 input 태그에 value를 지정한다.
- criteriaMode: "all" : 하나의 input 태그가 여러 에러 message를 가지고 표현하려면 필요한 조건이다.
- mode: "onChange" : input에 값이 변할 때마다 유효성 검증을 실시한다.
직접 사용해보고 자주 사용되는 react-hook-form의 기능들에 대해 살펴보았다.
input의 개수가 많고 관리할 유효성 조건들이 많아질수록 state의 관리가 늘어나는 react.js, next.js에서는
react-hook-form을 사용하면 코드 작성이 정말 편리해진다.
공식 문서를 참고하면서 본인 입맛에 맞는 유효성 검증을 해보면 좋을 것 같다.
'JavaScript > React.js' 카테고리의 다른 글
useInterval을 활용한 타이머 기능 만들기 (0) | 2023.02.01 |
---|---|
react-day-picker (0) | 2022.01.27 |
react-hook-form 사용법(1) (0) | 2021.11.22 |
React.js 기본 사용법(6) - 리스트와 key (0) | 2021.11.19 |
React.js 기본 사용법(5) - 조건부 렌더링 (0) | 2021.11.19 |