1 minute read

어느 서비스던 입력 폼 (로그인, 회원가입 등 정보 입력)이 없는 서비스는 찾기 힘들다.

그만큼 많이 사용하는 form을 쉽게 관리하고, 생성하고, 유효성 검사까지 간편하게

할 수 있는 라이브러리가 react-hook-form이다.

당연히 아주 많은 API들이 있는데,

(useForm, useController, useFormContext, useWatch, useFormState, useFieldArray)

손에 익도록, 기억에 넣을 수 있도록 대표적인 예제만 정리해 보며 익혀보자.

useForm

기본적으로 폼 양식을 쉽게 만들어줄 수 있는 hook이다.

여러가지 option들을 전달할 수 있다.

useForm({
  mode: "onSubmit",
  reValidateMode: "onChange",
  defaultValues: {},
  resolver: undefined,
  context: undefined,
  criteriaMode: "firstError",
  shouldFocusError: true,
  shouldUnregister: false,
  shouldUseNativeValidation: false,
  delayError: undefined,
});

전체적인 부분과 자세한 설명은 공식문서 (https://react-hook-form.com/api/useform)에 잘 나와있으니 참고하도록 하고, 몇가지만 알아보도록 하자.

mode : onChange, onBluer, onSubmit, onTouched, all 을 입력해줄 수 있다.

해당 옵션의 event가 발생할 경우, Validation을 진행한다.

defaultvalues : input의 default value를 설정한다. 밑에서 register를 배우겠지만,

register 이름과 원하는 value를 입력해준다.

...
const { register } = useForm({
  defaultValues: {
    fisrt: "first input의 default value",
    second: "second input의 default value"
  },
});
...
<form>
  <input {...register("first")} />
  <input {...register("second")} />
</form>
...

watch

입력된 value를 보여준다. 해당 method를 통해 조건부 렌더링 등을 구현할 때 유용하다.

...
const result = watch("first");
console.log(result); // first input에 값 입력시, console에 값이 출력된다.
...
<form>
  <input {...register("first")} />
</form>
...

handleSubmit

onSubmit 역할을 하는데, 엔터 입력시에도 submit이 되는 등 편리하게 구현이 되어있다.

input을 감싸는 form에서 적용해주면 된다.

Updated: