728x90
개요
회사 서비스 개발을 위해 react-query를 사용하게 되었고, 이를 정리하기 위해 글을 작성해보았다.
동작 구조
home 페이지가 호출될 때, backend에서 데이터를 가져오고 이를 보여주는 구조이다.
구조
실제 상용 데이터들이라 이름은 임의로 변경했다. 간단하게 FLOW만 보면 좋을 것 같다.
/src/app/home/page.body.tsx
'use client'
export default function HomeBody() {
const { data, isSuccess } = useHomeContentsQuery()
const { setError } = useErrorStore()
useEffect(() => {
if (isSuccess) {
if (data.status !== 200) {
setError(true, data.message)
}
}
}, [data])
return (
<>
{data?.data && (
<>
<HomeBanner bannerList={data.data.data1} />
<HomeList buyHighRank={data.data.data2} />
<HomeCard contents={data.data.data3} />
</>
)}
</>
)
}
useHomeContentsQuery()를 통해 react-query를 호출한다.
/src/queries/query.home.tsx
export function useHomeContentsQuery(): any {
return useQuery({
queryKey: [HomeContentsQueryKey.QUERY_LIST_CONTENTS],
queryFn: getHomeContents,
})
}
react-query에서 query key를 지정하고 backend와 통신하는 Function을 호출한다.
/src/api/api.home.tsx
export async function getHomeContents() {
const response = await HttpClient.get(Home.CONTENTS, { channelCd: 1 })
return response
}
fetch를 통해 받은 데이터를 return한다.
'프로그래밍 언어 > NEXT.JS' 카테고리의 다른 글
[NEXT.JS] 패키지 매니저 (NPM, YARN, PNPM) (0) | 2024.05.24 |
---|---|
[NEXT.JS] 404에러 페이지 처리하기 (0) | 2024.05.24 |
[NEXT.JS] env-cmd로 설정파일 분리하기 (0) | 2024.04.12 |
[NEXT.JS] pm2로 서비스 배포하기 (2) | 2024.04.12 |
[NEXT.JS] MSW(Mock Service Worker) (0) | 2024.03.07 |