언제 validation 검사를 할 지 정함
각 필드를 다른 시점에 검사할 수도 있음
const Forms: NextPage = () => {
const {
register,
handleSubmit,
formState: { errors },
} = useForm<LoginForm>({
mode: "onSubmit",
});
const { register: register2, formState: formState2 } = useForm<LoginForm>({
mode: "onChange",
});
...
return (
...
<input
{...register2("username", {
required: "username is required",
minLength: {
value: 5,
message: "The username should me longer than 5",
},
})}
type="text"
placeholder="Username"
/>
{formState2.errors.username?.message}
<input
{...register("email", {
required: "Email is required",
validate: {
notGmail: (value) =>
!value.includes("@gmail.com") || "Do not use gmail",
},
})}
type="email"
placeholder="Email"
/>
{errors.email?.message}
...
);
};
앨리먼트 속성 형식으로 사용
import { useForm } from "react-hook-form";
...
const { register } = useForm();
return (
...
<input
{...register("username", { required: true })}
type="text"
placeholder="Username"
minLength={5}
/>
)
각 옵션에 원하는 값과 불만족할 때의 에러 메시지를 넣을 수 있음
{...register("username", {
required: "username is required",
minLength: {
value: 5,
message: "The username should me longer than 5",
},
})}