개발자

react-hook-form과 React Query를 데이터 조회용도로도 함께 쓰는 것이 과연 효율적일까요?

2023년 05월 05일조회 2,222

안녕하세요. 실무에서 react-hook-form과 React Query를 함께 사용하고 있는 FE 개발자입니다. 먼저 제가 알기론 react-hook-form은 CRUD 중, C(생성)와 U(수정)를 위해 쓰는 경우, 폼 제출 시 React Query의 mutate 함수를 호출하게끔 코드를 짜는 것이 일반적인 것으로 알고 있습니다. 이 때에는 분명 validation 처리 등의 작업을 (useState, useRef와 같은 react 내장 hook 대비) 효율적으로 진행할 수 있다는 점을 충분히 이해하고 있어요. 이제 궁금한 점은 데이터를 조회하는 경우입니다. 과연 useState, useRef와 같은 react 내장 hook 대비 react-hook-form을 사용하는 것이 효율적일까요? 예컨대 키워드 검색과 페이지네이션 기능이 들어간 목록에서 데이터를 조회해오는 경우, react 내장 hook + React Query를 사용한 코드와 react-hook-form + React Query를 사용한 코드를 각각 작성해보았습니다. (아래 코드 첨부) 제가 생각한 결과는 아래와 같습니다. 1. 검색어 입력, 페이지네이션 기능 사용간 리렌더링 횟수 기준으로 성능적인 차이가 없습니다. (동일) 2. 조회 요청이므로 입력에 대한 validation 처리 코드가 필요하지 않습니다. (동일) 3. 코드량은 react-hook-form보다 react 내장 hook을 사용한 것이 더 적습니다. (react 내장 hook이 우위) 위 결과를 토대로 저는 아무리 프로젝트에서 react-hook-form을 도입했다고 하더라도 데이터를 조회해오는 상황에서는 react 내장 hook을 사용하는 것이 좀 더 가독성도 좋고 유지보수성도 높을거란 생각이 드는데요. (물론 제가 react-hook-form 코드를 효과적으로 작성하지 못했을 수도 있습니다. 혹시 그렇다면 이 부분도 지적 부탁드려요!) 여러분들의 생각은 어떠신가요?

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 3

인기 답변

강동희님의 프로필 사진

react-hook-form 을 사용하는 경우는 복잡한 폼에 있어서 좋은 효율을 보입니다. 예시를 들어주신 페이지네이션이나 검색을 구현하는데 있어서 react-hook-form 을 도입하는건 효율적이지 못하다고 생각하고 있습니다. 검색이나 pagination 을 위해 서버에 요청을 보낼땐 보통 query param 을 통해서 서버에 필터링을 요청을 하는데, 필터를 위해 react-hook-form 을 사용할 시 코드도 길어지고 react-hook-form 을 통해서 성능상 이점을 볼 수 있는 부분이 없다고 생각합니다. 키워드 검색을 구현하기 위해서 간단한 input 을 사용한다면 제어 컴포넌트를 활용해 구현하는게 코드적인 측면에서 이점이 있다고 생각이 듭니다. 보통 react-hook-form 을 통해서 사용자에게서 입력받은 값을 관리할때는 여러 필드를 입력받아 해당 데이터를 프론트단에서 관리하고, 서버에 Create, Update 요청을 할 때 사용하고는 합니다. 드리는 답변이 질문자님에게 와닿는 답변일지는 모르겠네요.. 아래에는 제가 react-hook-form 관련해 작성한 블로그 글 두 개를 남겨놓을게요! https://tech.osci.kr/2023/01/09/react-hook-form-series-3/ https://tech.osci.kr/2023/01/02/introduce-react-hook-form/

profile picture

익명

작성자

2023년 05월 06일

자세한 답변 감사합니다. 한 가지 더 여쭙고 싶은 게 있습니다. 동희님께서 “react-hook-form을 사용하는 경우는 복잡한 폼에 있어서 좋은 효율을 보입니다.“ 라고 하셨는데요, 그렇다면 조회인 경우에도 필터로 들어가는 input이 예컨대 10개이상쯤 된다고 한다면, 그 때는 react-hook-form을 사용하는 게 이점이 있을까요? 1. react-hook-form은 복잡한 폼에서 좋은 효율을 보인다. 2. react-hook-form은 조회용도로는 적합하지 않다. 그렇다면 조회용도에서 복잡한 폼인 경우에는 무엇을 선택할 것인가? 에 대한 추가적인 의문이 생겨서 그렇습니다!

강동희님의 프로필 사진

강동희

프론트엔드 개발자2023년 05월 06일

필터가 10개나 되는 복잡한 리스트를 구현해본적이 없어서 정확히 답변을 드리진 못할것 같습니다만, 기획에 따라서 달라질 것 같습니다. 두 가지 케이스로 생각해볼 수 있을것 같은데, 첫 번째 케이스로, 필터를 할 수 있는 Input 이 10개인데, 각각 필터를 바꿀때 마다 서버에 필터링 된 데이터를 요청하는 케이스. 위 케이스는 개인적으로 state 를 활용하는 편이 좋다고 생각합니다. 필터영역의 각각의 값이 변할때 마다 서버에 get 요청을 보내야 하고, 각각의 값을 파편적으로 다뤄야 한다고 생각하기 때문입니다. 두 번째 케이스로, 필터를 할 수 있는 input 이 10개인데, 필터영역의 값을 선택 하고 적용이라는 버튼을 클릭했을 때 필터링 데이터를 서버측에 한번에 요청하는 경우 입니다. 이 경우엔 react-hook-form 을 활용해 데이터를 관리하는 편이 효율적이라고 생각합니다. react-hook-form 을 통해 상태 값을 파편화 시키는것이 아닌 중앙 집중화 시켜서 관리할 수 있습니다.

profile picture

익명

작성자

2023년 05월 06일

이해되었습니다. 정성껏 답변해주셔서 감사합니다🙂🙂

인기 답변

손정현님의 프로필 사진

안녕하세요! 저도 validation이 필요없고, form이 복잡한 구조가 아니고, 단순 조회 용도라면 react-hook-form을 고집할 것 같지는 않습니다. 코드를 처음보는 사람 입장에서는 뭔가 괜히 더 어렵게 느껴질 것 같아요. 더 단순한 방법으로 짜는게 이해하기도 쉽고 확장하기도 쉬운것 같아요. 성능적인걸 떠나서 코드만 봤을때는 react hook(내장 훅)으로 짜는게 더 이해하기 쉬운것 같습니다. 올려주신 코드만 놓고 보면, 신입 개발자가 들어왔을때 react hook으로 되어있는 코드는 바로 이해할 가능성이 높지만 react-hook-form까지 들어간 코드를 보게되면 react-hook-form에 대해서도 공부해야하는 불필요한 허들이 생기긴할것 같아요. react-hook-form의 장점은 복잡한 form을 다룰때 불필요한 리렌더링 방지, 입력 요소 상태 관리, 검증 및 에러 로직을 쉽게 작성/관리 할 수 있다는 점인 것 같습니다. 결론은, 성능적으로 큰 차이가 없다고해도 코드를 읽고 이해하는 관점에서 react hook을 사용하는게 더 효율적일 것 같아요 :)

profile picture

익명

작성자

2023년 05월 06일

의견 감사드립니다. 한 가지만 더 여쭙자면, 혹시 조회용도임에도 들어가는 input이 예컨대 10개이상이라고 했을 때는 어떠한가요? 그러면 조금 말이 달라질까요? 저는 input이 아무리 많아져도 조회용일 때는 react 내장 hook을 사용할 것 같은데, 이 부분에 있어서도 정현님의 생각이 궁금합니다.

손정현님의 프로필 사진

손정현

coya2023년 05월 06일

음, input이 10개가 되는 상황이 어떤 느낌인가요?? 검색에 필터 여러개가 추가되는 느낌일까요?? 저라면 각각의 상태 값들이 잘 격리되어서 관리가 가능하다면 내장 훅으로 구현할 것 같긴합니다. 다만, 컴포넌트를 넘나드는 상태가 생기기 시작하면 context api나 상태 관리 툴을 쓸 것 같은데 직접 구현하는것도 방법이지만 react-hook-form의 useFormContext를 써서 관리하는것도 고려해볼 것 같아요 :) - https://react-hook-form.com/api/useformcontext/

profile picture

익명

작성자

2023년 05월 06일

제가 너무 추상적으로 말씀드렸던 것 같네요. 정현님 생각이 맞습니다. 검색어 입력에 추가적으로 예를 들면 정렬이나 시간 필터, 또한 데이터의 카테고리 종류가 여러 개라면 그만큼 필터가 더 필요할거라 생각했던거에요! 아무쪼록 사실 제가 추가로 질문드린 의도는 “데이터 조회시에는 parameter가 얼마나 많아지든 react 내장 hook을 사용하는 게 항상 더 효율적일 것 같다.“ 라는 저의 생각을 검증받고 싶었던 거였습니다. 감사합니다. 덕분에 많은 도움되었습니다🙂🙂

커리어리 AI 봇님의 프로필 사진

React Hook Form과 React Query는 각각 폼 처리와 데이터 요청을 쉽게 다룰 수 있게 해주는 라이브러리입니다. React Hook Form은 폼 제출 시 값을 검증하고 제출하기 쉽게 해주는 동시에, React Query는 데이터 요청의 상태를 관리하고 캐시를 관리해주기 때문에 사용성이 매우 좋습니다. 그런데 React Hook Form과 React Query를 데이터 조회용도로도 함께 사용하는 것이 효율적일까요? React Hook Form은 폼 데이터를 다루는 라이브러리이기 때문에, 데이터 조회와는 별개의 역할을 하기 때문에 함께 사용할 필요는 없을 것입니다. 따라서, React Query와 React Hook Form을 함께 사용하기보다는 React Query를 사용해서 데이터를 요청하고 받은 데이터를 사용해서 폼 컴포넌트를 구성하는 것이 더욱 효율적일 것입니다. 단, 이 경우 데이터 조회와 폼 컴포넌트 간의 데이터 전달을 어떻게 할 것인가에 대한 고민이 필요합니다. 예를 들어 데이터 조회 후 받은 데이터를 폼 컴포넌트에 전달하기 위해 useState를 사용하는 방법도 있을 것입니다. 따라서, 개발자의 판단에 따라 적절한 방법을 선택하면 됩니다.

커리어리 AI 봇의 답변을 평가해 주세요!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!