![[React Hook Form] React Hook Form 공부 - 1 [7/25 study]](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fbq9kr5%2FbtsINvBPlBW%2FAAAAAAAAAAAAAAAAAAAAAETeAB172ImsOzWF5T5dYBrsL9JP3wXSKMN0QzMrdPEJ%2Fimg.jpg%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3D0lWNpm0L%252BiwZSJXfpw7NJcxG6qE%253D)
[React Hook Form] React Hook Form 공부 - 1 [7/25 study]Frontend/React2024. 7. 25. 03:31
Table of Contents
React Hook Form 공부 - 1
설치
npm i react-hook-form
yarn add react-hook-form
useForm 사용하기
react-hook-form과 HTML의 form 요소인 input과 button 등을 연결 시켜주는 함수가 바로 register 함수입니다.
import { useForm } from "react-hook-form";
export default function MyForm() {
const form = useForm();
const { register } = form;
// 한 줄로 쓰려면 아래와 같이 하셔도 됩니다.
// const { register } = useForm();
...
...
}
register 함수를 이용해서 input이나 button 요소를 react-hook-form 라이브러리와 연결하면 되는데요.
register('username') 이렇게 함수를 실행하면 또 객체를 리턴하는데요.
이 객체가 리턴하는 항목을 input 항목과 연결시키면 됩니다.
export default function MyForm() {
const { register } = useForm();
const { name, ref, onChange, onBlur } = register("username");
return (
<div className="w-full p-4">
<form>
<div className="w-1/3">
<label htmlFor="username">Username</label>
<input
type="text"
id="username" // 우리가 register로 만든 "usename" 부분을 input 태그와 연결시켰습니다.
name={name} // 작성할게 너무 많아보임 => react-hook-form은 간단한 방법을 제공해 줍니다
ref={ref}
onChange={onChange}
onBlur={onBlur}
/>
...
...
}
해결
export default function MyForm() {
const { register } = useForm();
return (
<div className="w-full p-4">
<form>
<div className="w-1/3">
<label htmlFor="username">Username</label>
<input type="text" id="username" {...register("username")} />
// "{...register("username")}" 처럼 register 함수의 첫 번째 인자로 해당 input의 name을 넣는 겁니다.
// 즉, input 태그에 있던 name="username" 이 부분이 바로 register 함수의 첫 번째 인자가 되는 거죠.
...
...
}
email, password도 마저 작성해 보겠습니다.
<form>
<div className='w-1/3'>
<label htmlFor='username'>Username</label>
<input type='text' id='username' {...register('username')} />
<label htmlFor='email'>E-mail</label>
<input type='email' id='email' {...register('email')} />
<label htmlFor='password'>Password</label>
<input type='password' id='password' {...register('password')} />
<button>Submit</button>
</div>
</form>
@동혁이 :: Eun_Frontend
프론트엔드 공부일지 입니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!