React ๊ธฐ๋ฐ์ ํผ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ํผ ์ํ์ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๊ฐํธํ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค.
ํผ ์ปดํฌ๋ํธ์ ์ํ ๋ฐ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐ ํ์ํ ์ฝ๋ ์์ ๋ํญ ์ค์ผ ์ ์๋ค.
ํผ ์์์ ๊ฐ์ด๋ ์ํ ๋ณ๊ฒฝ์ ๋ํ ์ด๋ฒคํธ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ๋ช ์์ ์ธ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์์ฑํ ํ์ ์์ด, ๋จ์ํ Hook(useForm, useController, useWatch...)์ ์ฌ์ฉํ์ฌ ๊ด๋ จ ๋ฐ์ดํฐ๋ฅผ ์ถ์ ํ๊ณ ์ ๋ฐ์ดํธํ ์ ์๋ค.
react hook form์ ํต์ฌ ํจ์๋ก ํผ์ ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ณ ํผ ๋ฐ์ดํฐ์ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค.
ํจ์๋ก ์
๋ ฅ ํ๋๋ฅผ react hook form์ ๋ฑ๋กํ๋ค.
์
๋ ฅ ํ๋์ ๋ํ ์ ํจ์ฑ ๊ฒ์ฌ ๊ท์น, ๊ธฐ๋ณธ๊ฐ ๋ฑ์ ์ค์ ํ ์ ์๋ค.
import {useForm} from "react-hook-form";
const Login = () => {
const {register} = useForm();
console.log(register("id"));
return (
<form>
<input
placeholder="์์ด๋"
type="text"
{...register("id")}
/>
<input
placeholder="๋น๋ฐ๋ฒํธ"
type="password"
{...register("pw")}
/>
<button>์ ์ถ</button>
</form>
)
}

ํผ์ ์
๋ ฅ๊ฐ์ ์ถ์ ํ ์ ์๋ ํจ์
์
๋ ฅ๊ฐ์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์
๋ ฅ ๊ฐ์ ๋ฐํํ๋ค.
import {useForm} from "react-hook-form";
const Login = () => {
const {register, watch} = useForm();
console.log(watch());
return (
<form>
<input
placeholder="์์ด๋"
type="text"
{...register("id")}
/>
<input
placeholder="๋น๋ฐ๋ฒํธ"
type="password"
{...register("pw")}
/>
<button>์ ์ถ</button>
</form>
)
}

ํผ ์ ์ถ ์ ์คํํ ํจ์๋ฅผ ์ ์ํ๋ค.
handleSubmit์ ์ฌ์ฉํ๋ฉด ํผ ์ ์ถ ์ ์๋ก๊ณ ์นจ ํ์์ด ์ผ์ด๋์ง ์๋๋ค. (event.preventDefault() ํผ ์ ์ถ ๋ฐฉ์ง ์ฒ๋ฆฌ๊ฐ ํ์ ์์)
๋ ๊ฐ์ ์ธ์๋ฅผ ๊ฐ๋๋ฐ ์๋์ ๊ฐ๋ค.
์ฒซ ๋ฒ์งธ ์ธ์๋ ๋ฐ์ดํฐ๊ฐ ์ ํจํ ๋ ํธ์ถ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ํ์๋ก ์ง์ ํด์ผ ํ๋ค.
import {useForm} from "react-hook-form";
const ToDoList = () => {
const {register, watch, handleSubmit} = useForm();
const onValid = (data : any) => {
console.log(data);
}
console.log(watch());
return (
<form onSubmit={handleSubmit(onValid)}>
<input
placeholder="์์ด๋"
type="text"
{...register("id")}
/>
<input
placeholder="๋น๋ฐ๋ฒํธ"
type="password"
{...register("pw")}
/>
<button>์ ์ถ</button>
</form>
)
}
์ฐธ๊ณ