[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 ํ˜•์‹์„ ์‰ฝ๊ฒŒ ๋งŒ๋“ค์–ด ํŽธ๋ฆฌํ•˜๋‹ค

refe: https://react-hook-form.com/

'๐Ÿ“š 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