개발/자바스크립트
[리액트] React-hook-form
대왕판다
2022. 1. 30. 10:11
리액트에 내장된 hook만으로 컴포넌트 속 form을 검증하기 위해서는
const [toDo, setToDo] = useState("");
const [toDoError, setToDoError] = useState("");
const onChage = (event: React.FormEvent<HTMLInputElement>) => {
const {
currentTarget: { value },
} = event;
setToDoError("");
setToDo(value);
};
const onSubmit = (event: React.FormEvent<HTMLFormElement>) => {
event.preventDefault();
if (toDo.length < 10) {
return setToDoError("To Do Should Be Longer");
}
console.log("Submit");
};
return (
<div>
<form onSubmit={onSubmit}>
<input onChange={onChage} value={toDo} placeholder="Write a to do" />
<button>Add</button>
{toDoError !== "" ? toDoError : null}
</form>
</div>
);
useState와 function을 각각의 에러, 메세지마다 따로 정의해줘야 한다. 매우 길고 번거로움.
-
react-hook-form을 사용한다면 useForm 하나로 data를 array에 스프레드하거나 검증하는 등 많은것을 해결할 수 있다.
const {
register,
handleSubmit,
formState: { errors },
setError,
} = useForm<IFom>({
defaultValues: {
email: "@naver.com",
},
});
form과 input이 많아질수록 유용할듯