Providers
์ปดํฌ๋ํธ์ ์ญํ Providers
๋ React ์ ํ๋ฆฌ์ผ์ด์
์ ๊ณตํต context provider๋ค์ ํ๋๋ก ๋ฌถ๋ ์์ wrapper ์ปดํฌ๋ํธ๋ค.
์ด ๊ตฌ์กฐ๋ ์ ์ฒด ์ฑ์์ ํ์ํ ๊ธ๋ก๋ฒ ์ํ, ํ
๋ง, ์ธ์ฆ, React Query ๋ฑ์ ๊ธฐ๋ฅ๋ค์ ์ผ๊ด๋๊ฒ ์ ๊ณตํ ์ ์๋๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
QueryClientProvider
@tanstack/react-query
useQuery
, useMutation
๋ฑ React Query์ ๋ชจ๋ ํ
์ ๋ด๋ถ์ ์ผ๋ก ์ด provider๋ก๋ถํฐ QueryClient
์ธ์คํด์ค๋ฅผ ์ฐธ์กฐํ๋ค.<QueryClientProvider client={queryClient}>
...
</QueryClientProvider>
QueryClientProvider
๋ฅผ ์ต์๋จ์ ๋ฐฐ์นํจ์ผ๋ก์จ ์ฑ ์ ์ญ์์ ์ผ๊ด๋ React Query ์บ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
new QueryClient()
๋ ์บ์ ์ ์ฅ์๋ฅผ ์์ฑํ๋๋ฐ, ํํ์ด์ง ์ฒซ ์ ์ ์ดํ ๋ค๋ฅธ ํ์ด์ง๋ก ์ด๋ํด๋ ์บ์๊ฐ ์ด๊ธฐํ๋์ง ์๋๋กuseState
๋ก ๊ฐ์ธ์ ํ ๋ฒ๋ง ์์ฑํด ์ ์งํ๋ค.
HydrationBoundary
@tanstack/react-query
dehydrate(queryClient)
)๋ฅผ ํด๋ผ์ด์ธํธ์์ ์ฌ์ฌ์ฉํ๋๋ก ๋ณด์ฅํ๋ค.prefetchQuery
๋ฅผ ํธ์ถํด ๋ฐ์ดํฐ๋ฅผ QueryClient์ ๋ฏธ๋ฆฌ ๋ก๋dehydrate(queryClient)
๋ฅผ ํตํด ์บ์ ์ํ๋ฅผ ์ง๋ ฌํHydrationBoundary state={...}
๋ฅผ ํตํด ํด๋น ์ํ๋ฅผ ๋ค์ ๋ถ๋ฌ์ด<HydrationBoundary state={dehydratedState}>
<Component />
</HydrationBoundary>
๋ง์ฝ state๊ฐ ์ ๊ณต๋์ง ์๋ ๊ฒฝ์ฐ, HydrationBoundary๋ ์๋ฌด๋ฐ ํ์ด๋๋ ์ด์ ๋ก์ง์ ์ํํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ SSR/SSG ํ๊ฒฝ์์ ์ค์ง์ ์ธ ๋ฐ์ดํฐ ์ฌํ์ฉ์ ํ๋ ค๋ฉด state๋ฅผ ๋ช ์ํด์ผ ํฉ๋๋ค.