회사 프로젝트 코드에 watch, register, trigger 등등.. 처음 접해본 코드를 보고 정리를 해야겠다고 마음 먹었다 😋
form 형식의 페이지를 만드는 것은 생각보다 번거로운 작업이 많다.
form의 갯수에 맞게 state 관리를 해야하고, reset이 필요하면 state 갯수만큼 초기화를 한다.
값의 검증이나 onChange 이벤도 상태의 수 만큼 만들어줘여한다.
→ 유사한 코드 반복
npm install react-hook-form
import { useForm } from "react-hook-form";
export default function App() {
const { register, handleSubmit, watch, formState: { errors } } = useForm();
const onSubmit = data => console.log(data);
console.log(watch("example")); // watch input value by passing the name of it
return (
/* "handleSubmit" will validate your inputs before invoking "onSubmit" */
<form onSubmit={handleSubmit(onSubmit)}>
{/* register your input into the hook by invoking the "register" function */}
<input defaultValue="test" {...register("example")} />
{/* include validation with required or other standard HTML validation rules */}
<input {...register("exampleRequired", { required: true })} />
{/* errors will return when field validation fails */}
{errors.exampleRequired && <span>This field is required</span>}
<input type="submit" />
</form>
);
}
useForm({
defaultValues: {
firstName: '',
lastName: ''
}
})
<input defaultValue="test" {...register("example")} />
...register("example", {
/* 많은 옵션 가능 */
})
a. required - 필수 요소
값이 true면, submit 이벤트가 발생할 때 값이 비어있다면 error를 받아온다.
b. maxLength - input의 최대길이
c. pattern - 정규 표현식을 넘겨야한다. input 값이 해당 표현식에 통과하지 않으면 error를 받아온다
이 외에도 많은 옵션이 있다.
<form onSubmit={handleSubmit()}>
</form>
watch('example')
register 통해 설정한 값이 handleSubmit 통해 통과되지 않으면 errors를 통해
해당 상태의 명, 에러 종류를 받을 수 있다.