React Hook Form이란?

공식 홈페이지 : https://react-hook-form.com/

장점

설치하기

npm install react-hook-form

리액트 훅 폼 없이 폼 만들기

import { useState } from "react";

function ToDoList() {
  const [todo, setTodo] = useState("");
  //에러 만들기
  const [toDoError, setToDoError] = useState("");

  //onChange 이벤트
  const onChange = (event: React.FormEvent<HTMLInputElement>) => {
    const {
      currentTarget: { value },
    } = event;
    setTodo(value);
  };
  //onSubmit 이벤트
  const onSubmit = (event: React.FormEvent<HTMLFormElement>) => {
    event.preventDefault();
    //글자수가 10자 미만일 때 에러가 발생
    if(todo.length < 10) {
        return setToDoError("글자 수가 부족함")
    }
    setToDoError("");
    console.log(todo);
  };
  return (
    <div>
      <form onSubmit={onSubmit}>
        <input onChange={onChange} value={todo} placeholder="Write a to do" />
        <button>Add</button>
        {/* 에러표시 */}
        {toDoError !== "" ? toDoError : null}
      </form>
    </div>
  );
}
export default ToDoList;

🧡register

사용하기(ts)

import { useForm, SubmitHandler } from "react-hook-form";

//register name별로 타입 지정해줘야함 ㅡㅡ;
interface IFormInput {
  firstName: String;
  gender: GenderEnum;
}
const { register, handleSubmit } = useForm<IFormInput>();
<form onSubmit={handleSubmit(onSubmit)}>
	<input {...register("값의 이름")} />
  ...

{name: 'toDo', onChange: ƒ, onBlur: ƒ, ref: ƒ}
name: "toDo"
onBlur: async event => {…}
onChange: async event => {…}
ref: ref => {…}
[[Prototype]]: Object

이를 {...} 스프레드 문법으로 풀어내면 input에 name, onBlur, onChange, ref가 props로 들어감