일단 터미널에 yup을 설치해준다.
yarn add yup
그리고 hook과 yup을 연결시켜줄 라이브러리도 설치해준다.
yarn add @hookform/resolvers yup
import { useForm } from "react-hook-form";
import * as yup from "yup";
import { yupResolver } from "@hookform/resolvers/yup/dist/yup";
//yup에서 사용할 룰
const schema = yup.object().shape({
myEmail: yup
.string()
.email("이메일 형식이 적합하지 않습니다.")
.required("반드시 입력해야하는 필수 사항입니다."),
myPassword: yup
.string()
.min(4, "비밀번호는 최소4자리 이상입니다.")
.max(15, "비밀번호는 최대 15자리까지입니다.")
.required("비밀번호는 반드시 입력해주세요."),
});
interface FormValues {
myEmail: string;
myPassword: string;
}
export default function ReactHookFormPage() {
const { handleSubmit, register, formState } = useForm({
mode: "onChange",
resolver: yupResolver(schema),
});
function onClickLogin(data: FormValues) {
//loginUser API 요청하기!!!
console.log(data);
}
return (
<form onSubmit={handleSubmit(onClickLogin)}>
이메일: <input type="text" {...register("myEmail")} />
<div>{formState.errors.myEmail?.message}</div>
비밀번호: <input type="password" {...register("myPassword")} />
<div>{formState.errors.myPassword?.message}</div>
<button>로그인하기</button>
</form>
);
}
잘뜬당..