๐ Library
[Library] react-hook-form
TerryEHLee
2024. 3. 7. 11:56
๊ฐ์: 'form'์ ์ฝ๊ฒ ๋ง๋๋๋ฐ ์ ์ฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
์ฌ์ฉ
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น
npm install react-hook-form
zod์ ๊ฒฐํฉํ์ฌ shema์ ์ ์ฅํด๋ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ๋ถ๋ฌ์ Form์ ๋ง๋ค์ด ๋๋๋ง๋ถ์ ๋์
import { useForm } from 'react-hook-form';
import { zodResolver } from '@hookform/resolvers/zod';
import * as z from 'zod';
const schema = z.object({
name: z.string().min(1, { message: 'Required' }),
age: z.number().min(10),
});
const App = () => {
const {
register,
handleSubmit,
formState: { errors },
} = useForm({
resolver: zodResolver(schema),
});
return (
<form onSubmit={handleSubmit((d) => console.log(d))}>
<input {...register('name')} />
{errors.name?.message && <p>{errors.name?.message}</p>}
<input type="number" {...register('age', { valueAsNumber: true })} />
{errors.age?.message && <p>{errors.age?.message}</p>}
<input type="submit" />
</form>
);
};
์๊ฒฌ
- TS ์ฌ์ฉ ํ๋ก์ ํธ์์ Zod์ ํจ๊ป ์ฌ์ฉํ๋ฉด ์ ํจ์ฑ๊ฒ์ฌ๋ฅผ ์ฝ๊ฒ ๊ตฌํํ ์ ์์ด ํธ๋ฆฌํ๋ค.
- TS์ ์์ ์ด ์๋๋ฐ, Zod๋ก ๋์ ์ ๋ค์ด์ค๊ฒ ๋จผ์ ๋ฐ์ดํฐํ์๋ค์ ๊ด๋ฆฌํ๋ TS ์ค๋ฅ๋ก ๋ถํฐ ์์ ๋ก์์ ธ์ ์์ ๊ฐ์ด ์๊ธด๋ค.
- form ํ์์ ์ฝ๊ฒ ๋ง๋ค์ด ํธ๋ฆฌํ๋ค