useForm이라는 hook을 import 해야함(설치 필수)npm install react-hook-formimport { useForm } from "react-hook-form";
const {register, watch} = useForm();
//기존코드
function ToDoList() {
const [toDo, setToDo] = useState("");
const [toDoError, setToDoError] = useState("");
const onChange = (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={onChange} value={toDo} placeholder="Write a to do" />
<button>Add</button>
{toDoError !== "" ? toDoError : null}
</form>
</div>
);
}
//useForm 훅 사용
function ToDoList() {
const { register, watch } = useForm();
console.log(watch());
return (
<div>
<form>
<input {...register("email")} placeholder="Email" />
<input {...register("firstName")} placeholder="First Name" />
<input {...register("lastName")} placeholder="Last Name" />
<input {...register("username")} placeholder="Username" />
<input {...register("password")} placeholder="Password" />
<input {...register("password1")} placeholder="Password1" />
<button>Add</button>
</form>
</div>
);
}
코드가 엄청 줄었다..... 굿
리액트를 배우면서 input value, onChange, onSubmit 등 입력값을 가지고 useState하는 작업을 많이 했는데, 또 또 신개념 useForm을 알게 되어 코드가 많이 줄었다.
훅이란 녀석들은 참 대단한거 같다.
많이 축약된 만큼 더 공부해야겠지만 그 많던 코드들이 저렇게 줄어드는게 신기할 따름...
계속해서 form에 대해서 공부해야겠다.( 에러, 검증 등)