[Library] react-hook-form
2024. 3. 7. 11:56ใ๐ Library
๊ฐ์: '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 ํ์์ ์ฝ๊ฒ ๋ง๋ค์ด ํธ๋ฆฌํ๋ค
'๐ Library' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Library] Zustand (0) | 2024.03.19 |
---|---|
[Library] Zod (0) | 2024.03.07 |
[Library] [shadcn/ui] (0) | 2024.03.04 |
[Library]lodash์ ๋ํ์ฌ (0) | 2023.04.27 |