React와TanStackQuery의 만남 useSuspenseQuery

Tanstack Query v5로 업데이트 되면서 Suspense 기능이 정식으로 통합되었습니다. 이 기능은 React 18 에서 도입된 Suspense와 함께 작동하며, 비동기 데이터 로딩을 더욱 간편하고 직관적으로 처리할 수 있게 해주는데요.

useSuspenseQueryReact의 Suspense 기능과 TanStack Query를 결합한 매우 유용한 훅입니다. 이 훅을 사용하면 비동기 데이터 로딩과 상태 관리가 크게 간소화할수 있는데요. 다음은 useSuspenseQuery의 주요 특징입니다.

  1. Suspense 지원:

    1. React의 Suspense와 원활하게 통합되어, 로딩 중에는 가장 가까운 Suspense 경계로 예외를 던집니다.

    2. useSuspenseQuery내부 Promise를 React Suspense에게 throw 하는 형태로 구현되었습니다. 따라서 React는 throw된 useSuspenseQuery의 Promise를 감지하고, 가장 가까운 Suspense 경계에서 이를 ‘캐치’하여 화면에 렌더링 합니다.

  2. 간소화된 상태 처리:

    1. useQuery는 로딩 상태를 직접 처리해야 하지만, useSuspenseQuery는 로딩 중에는 가장 가까운 Suspense 경계 내에서 로딩 상태를 처리하기 때문에 별도의 로딩 상태를 명시적으로 처리할 필요가 없습니다.

    2. 에러 상태역시 별도로 처리할 필요 없이 가장 가까운 Error Boundary로 전달되어 자동으로 처리됩니다.

    3. data 반환 값의 status가 언제나 success를 반환하므로 데이터 존재 여부를 위한 옵셔널 체이닝이 필요 없습니다. 이전 useQuery(V4) 는 처음 반환값이 ‘undefined’ 를 반환하고 이후에 ‘data’를 반환했는데요. useSuspenseQuery는 suspense 옵션이 기본적으로 true이고, status가 언제나 success인 data 값을 반환합니다.

  3. 주의사항:

    1. Suspense와 Error Boundary를 상위 컴포넌트에 반드시 감싸서 사용해야 합니다. Suspense는 로딩 중의 UI를 처리하고, Error Boundary는 에러 발생 시 대체 UI를 렌더링합니다.


useQuery를 적극적으로 사용하셨다면 이제 useSuspenseQuery를 사용해보세요. useSuspenseQuery는 비동기 데이터를 더욱 간편하게 처리할수 있고, React와도 잘 어우러져 작동합니다. 코드가 간결해지고 유지보수도 더욱 쉬워집니다. 개발자는 데이터 상태 관리에 시간을 쏟는 대신, 비즈니스 로직과 UI 구현에 더 집중할 수 있습니다.


https://tanstack.com/query/latest/docs/framework/react/reference/useSuspenseQuery

useSuspenseQuery | TanStack Query React Docs

tanstack.com

useSuspenseQuery | TanStack Query React Docs

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2024년 8월 30일 오전 12:21

 • 

저장 23조회 2,210

댓글 0

    함께 읽은 게시물

    정직한 경험 소개

    

    ... 더 보기

     • 

    저장 1 • 조회 498


    컨텍스트 스위칭 - AI 코딩 부작용

    ... 더 보기

    컨텍스트 스위칭 - AI 코딩 부작용

    K리그 프로그래머

    컨텍스트 스위칭 - AI 코딩 부작용

    인프라 엔지니어의 교과서 개정 2판

    ... 더 보기

    조회 810


    《기다림이 허락되지 않는 시대》

    ... 더 보기

    [비전공자에서 독학으로 시니어 엔지니어가 된 이야기 1탄]

    20대 중반에 나를 만나 코딩을 알게 되어 2년 독학으로 엔지니어가 된 남편 이야기. 독학 준비 중인 사람들에게 도움되고자 공부 팁을 공유할 겸 독학 현실 이야기도 함께 해봅니다. 남편은 패키징 산업 공학 전공으로 졸업 후 IT 감사원으로 컨설팅 회사에 입사했습니다. (IT 감사원 경력이 엔지니어가 되는데 큰 도움이 되었는데, 그건 나중에..) 개발자인 저를 만나고 테크 쪽에 관심을 갖기 시작했고, 코딩 독학을 결정하게 되었습니다. 하지만 혼자 공부해서 개발자가 되기에는 버거웠고, 무엇보다도 남동생이 컴공 공부하다가 어려워서 포기한 것을 알기에, 선뜻 개발자가 되는 건 망설여졌습니다. 또한 이미 경력이 좀 있어서 “이걸 살려서 할 수 있는 방법이 없을까?”라는 고민을 하게 되었습니다. 당시 근무하던 회사는 커리어에 도움되지 않다고 판단하고 이직을 결정합니다. 약 3개월의 준비 후 경력을 살리면서 보안에 대해 배울 수 있는 사이버 컴플라이언스 컨설턴트로 테크 컨설팅 회사에 입사했습니다. 전 회사는 IT 기업이 아니어서 듣는 정보가 부족했지만, 테크/IT 쪽으로 이직하면서 많은 정보를 듣기 시작합니다. 직장 동료... 더 보기

     • 

    댓글 1 • 저장 60 • 조회 6,352


    기능 정의의 중요성

    자주 사용하는 공통기능을 하나의 모듈로 만들어 놓고, 필요할때 마다 참고 하는 성향이 있어서 개인적인 공간에 작업물을 정리 하거나, 나만의 모듈로 만드는 것을 종종 진행하고 있어요.

    ... 더 보기