리액트에 내장된 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이 많아질수록 유용할듯
'개발 > 자바스크립트' 카테고리의 다른 글
[네스트js] 컨트롤러, 프로바이더, 모듈 + validation (0) | 2022.03.17 |
---|---|
[리액트]react-beautiful-dnd (0) | 2022.02.14 |
[리액트] Recoil - state management (0) | 2022.01.19 |
[타입스크립트] 타입스크립트 기본개념 + 병합연산자 (0) | 2022.01.11 |
[리액트] - styled component (0) | 2022.01.09 |