react-hook-form 시작하기
2023. 11. 26. 17:56ㆍTIL
서비스 개발시 form은 필수적으로 활용될 것이다.
로그인 같은 경우도 정말 단순한 기능같지만, 실제로 개발자는
데이터 핸들링, validation체크, 에러 팝업, 데이터 submit 등 많은 것들을 고려해야한다.
이때 React Hook Form이란 라이브러리를 사용하여 훨씬 효율적인 코드를 짤 수 있다.
npm install react-hook-form
import { useForm } from 'react-hook-form'
1. useForm()이 return해줄 객체를 담을 변수를 생성한다.
const form = useForm();
Register
useForm hook이 제공하는 여러 method가있다.
const { register } = form
const { name, ref, onChange, onBlur } = register("username")
return (
<div>
<form>
<label>Name</label>
<input
type="text"
name={userName}
ref={ref}
onChange={onChange}
onBlur={onBlur}
/>
<label>Age</label>
<input
type="text"
name={age}
ref={ref}
onChange={onChange}
onBlur={onBlur}
/>
<label>Address</label>
<input
type="text"
name={address}
ref={ref}
onChange={onChange}
onBlur={onBlur}
/>
</form>
</div>
)
register는 form object에 access할수있다. 그리고 이 register 메소드는 또 4개의 메소드(name, ref, onChange, onBlur)를 리턴한다. 하지만 이 경우 모든 field마다 props를 넣어주어야한다는 귀찮음이 있으니 spread operator을 사용해준다.
const { register } = form
return (
<div>
<form>
<label>Name</label>
<input
type="text"
{...register("userName")}
/>
<label>Age</label>
<input
type="text"
{...register("age")}
/>
<label>Address</label>
<input
type="text"
{...register("address")}
/>
</form>
</div>
)
인풋값을 입력 받아 register로 form에 access해주었다면 이제 이 data를 제출해보자
Submission
const form = useForm<FormValues>();
const { register, handleSubmit } = form;
type FormValues = {
username: string;
age: string;
address: string;
}
export const example = () => {
// submit버튼이 클릭되었을때
const onSubmit = (data:FormValues) => {
console.log('submitted!')
}
return (
<div>
<form onSubmit={handleSubmit(onSubmit)}>
<label>Name</label>
<input type="text" {...register("userName")}/>
.
.
.
)
}
handleSubmit 메소드를 사용하면 form hook이 알아서 onSubmit함수로 data를 보내준다.
data의 타입도 지정해주자
submit하는 데이터의 validation을 체크해줄수있다.
Form Validation
required(필수값), minLength & maxLength, pattern등 모두 체크해줄수있다.
<form onSubmit={handleSubmit(onSubmit)}>
<label>Name</label>
<input type="text" {...register("userName", {
required: 'useName is required',
})}/>
required을 체크하고싶으면 required object를 register의 argument로 넣어주면된다.
'TIL' 카테고리의 다른 글
React-hook-form defaultValues 업데이트는 reset을 사용해주기 (1) | 2023.11.30 |
---|---|
react-form-hook으로 깔끔하게 form 만들기 (0) | 2023.11.16 |
xlsx라이브러리 사용하여 엑셀 파일로 다운로드 기능 심어주기 (0) | 2021.12.28 |
📱모바일에서 💻pc버전으로 볼 수있도록 구현하기 (0) | 2021.11.26 |
자식컴포넌트에서 부모컴포넌트로 함수 보내주기 (0) | 2021.11.20 |