HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
react-hook-form 이용한 Input, 재사용가능한 컴포넌트로 만들기

react-hook-form 이용한 Input, 재사용가능한 컴포넌트로 만들기

1차 구현코드

선언

notion image
  • ReviewFormData는 react-hook-form에서 관리할 data 타입이다.

이용

notion image
notion image
  • 타입이 확실히 지정되어있기에, registerName(ReviewFormData의 key 값)에서도 타입추론이 가능했다.
 

문제점

  • props가 RegisterInputProps<ReviewFormData> 타입으로 강하게 엮여있어, 다른 input에서 재사용할 수 없었다.
  • 이 타입을 동적으로 받는 방향으로 수정하려했고, 제네릭을 활용하기로 결정했다.
 
 

2차 구현코드

선언

notion image
  • 이용할 타입을 제네릭으로 받아, Register에서 관리할 타입을 결정한다.
 

이용

notion image
 

문제

notion image
  • 이용하는 곳에선 타입이 결정되지 않았기에, registerName을 추론할 수 없다.
    • 어떻게 추론할 수 있을까?
      • 추론안해도 돌아가긴 하지만, 오타를 내는 순간 바로 문제가 생긴다.
      • 그래서, 추론하도록 해 컴파일시에도 에러를 체크하도록 만들고 싶다.
    • 참고로 register은 useForm을 정의할 때, 타입이 정하기때문에 이용하는 곳에서 타입추론이 가능하다
      • notion image
  • 선언부에서 타입 추론이 다르다..
    • notion image
      notion image
    • register은 이용하는 곳의 T를 이용한다고 정의되어있지만
    • registerName은 아니다.. 왜 차이가 나지?
    •  

해결했다!!!!

notion image
  • 추론 안됐던 이유는..registerName타입인 Path<T>의 Path 타입 정의를 참조해오지 않아서 발생했던 문제였다.
  • 자동 import가 안되서 react-hooks-form 내부에 Path타입을 찾기위해 노드모듈을 직접 까봤고, Path타입이 내부정의 되어있는 걸 발견해서, 수동 import해주니까 됐다!!
    • notion image