refetching์ ํ ๋ ์ผ๋ํด์ผํ ์ ์ ์๋ฒ๊ฐ ๋ง๋ฃ๋ฐ์ดํฐ๋ฅผ ์
๋ฐ์ดํธํ๋ค๋ ๊ฒ์ด๋ค.
์ฆ, ์ผ์ ์๊ฐ์ด ์ง๋๋ฉด ๊ฐ๋ฐ์์ ์์ง์ ์๊ด์์ด ์๋ฒ๊ฐ ๋ง๋ฃ๋ ๋ฐ์ดํฐ๊ฐ ์ญ์ ๋๋ค๋ ๊ฒ์ด๋ค.
๋ฐ๋ผ์, ๋ฆฌํจ์นญ ํ์ด์ง๋ฅผ ๋ฒ์ด๋ฌ๋ค๊ฐ ๋ค์ ๋์์์ผ ๋ฐ์ดํฐ๋ฅผ ํ์ธํ ์ ์๋ค.
๋ด๊ฐ ํ์ด์ง๋ฅผ ๋ณด์์ ๋ ๋ฐ์ดํฐ๊ฐ ๋ค์ด์จ๋ค. ์ด๋ staleTime์ ๋ฐ๋ก ์ค์ ํ์ง์๋ ์ด์ 0์ด๋ก ์ค์ ๋์ด์๊ณ ๊ทธ ๋ป์ ๊ณ์ํด์ ๋ง๋ฃ๋ ๋ฐ์ดํฐ๋ผ๋ ๊ฒ์ด๊ณ ๊ณ์ํด์ refetching๋์ด ์ ๋ฐ์ดํธ ๋๋ค๋ ๊ฒ์ด๋ค.
๋ฆฌํจ์นญ์ด ๋๊ธฐ ์ํด์๋ ์๋ก๊ณ ์นจ ๋๋ ํ์ด์ง๋ฅผ ๋ฒ์ด๋ฌ๋ค๊ฐ ๋ค์ ๋ค์ด์ค๋ ๋ฑ์ ๋์์ด ์์ด์ผ ๊ฐ๋ฅํ๋ค.
๋ฐ๋ผ์ refetching์ ๊ทธ๋ฐ ์ํฉ์ ๋ง๊ฒ ์ต์ ์ ํตํด ์ค์ ํ ์ ์๋ค.
โ refetcing์ ํ๊ธฐ ์ํด์๋ ์ต์ ์ผ๋ก ์ ์ดํ ์ ์๋ค.
์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ์๋ ์ ์ญ์ด๋ ์๋ ์๊ณ , ํธ์ถ ์ฟผ๋ฆฌ ์ฌ์ฉ์ ํน์ ๋ ๊ฒ์ผ ์๋ ์๋ค.(์ฐธ๊ณ )
โ refetching์ ์ง์ ๋ช ๋ นํ ์๋ ์๋ค!
์ต์ ์ผ๋ก ์ ํด์ ธ๋์ ๋๊ฐ ์๋, ์ํ๋ ๋์ ๋ถ๋ฌ์ค๊ณ ์ถ์ ๋ฐ์ดํฐ ๋๋ ์ค๋ฅ๊ฐ ์๋ ๊ฒฝ์ฐ๋ ์์ ๊ฒ์ด๋ค. ์ด๋๋ useQuery๋ฅผ ์ฌ์ฉํ์ฌ refetch ํจ์๋ฅผ ๋ฐํ์ํค๋ฉด ๋๋ค.
ueryClient.invalidateQueries()
refetch()
โ refetching์ ์ ํํ๊ณ ์ถ์๋๋?
refetching์ ์ ํํ๊ณ ์ถ์๋๋ stale time์ ์ฆ๊ฐ์ํค๋ฉด ๋๋๋ฐ, ์ฐฝ์ ์ฌํฌ์ปค์คํ๊ฑฐ๋ ๋คํธ์ํฌ์ ์ฌ์ฐ๊ฒฐํ๋ ํธ๋ฆฌ๊ฑฐ๋ ๋ฐ์ดํฐ๊ฐ ์ค์ ๋ก ๋ง๋ฃ๋๋ ๊ฒฝ์ฐ์๋ง ์ ์ฉํ๊ธฐ ๋๋ฌธ์ด๋ค. ์ฆ, stale time์ด ์ฆ๊ฐํ๋ฉด ๋ง๋ฃ๋๋ ๊ฒฝ์ฐ๊ฐ ์ง์ฐ๋ ํ ๋๊น.
๋๋ ์์ ๋ณธ ์ต์ ์ค์ ํ๋ ๋๋ ์ ์ฒด๋ฅผ false๋ก ์ค์ ํ๋ฉด ๋ ๊ฒ์ด๋ค.
ํ์ง๋ง refetcing์ ์ ํํ ๋๋ ์ ์คํด์ผํ๋ค. ๋ณ๋์ด ์ฆ์ง ์์ ๋ฐ์ดํฐ์ ์ ์ฉํด์ผํ๋ฉฐ ๋ฏธ์ธํ ๋ณ๊ฒฝ์๋ ํฐ ๋ณํ๋ฅผ ์ผ์ผํฌ ์ ์๋ ๋ฐ์ดํฐ์๋ ์ ์ฉํ๋ฉด ์๋ ๊ฒ์ด๋ค.
โ refetching์ ํ๋ค๋ ๊ฒ์...
์๊ฐํด๋ณด๋ฉด refetching์ ํ๋ฉด ๋งค๋ฒ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํธํด์ ์ต์ ํ๋ ์ํ๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ผํ๊ธฐ ๋๋ฌธ์ ๋คํธ์ํฌ ํธ์ถ์ด ๋น๋ฒํ ๊ฒ์ด๋ค.
ํ์ง๋ง, React Query๊ฐ๋ฐ์ ์.
'๋ฐ์ดํฐ๊ฐ ์ด๋ป๊ฒ ํญ์ ์ค์๊ฐ์ผ ์ ์๋์?'
๊ฐ '์ ๋ฐ์ดํฐ๊ฐ ์
๋ฐ์ดํธ๊ฐ ์๋๋์?'
๋ณด๋ค๋ ํจ์ฌ~ ๋ซ๋ค.
๋ง๋๋ฏ ๐
์์ ๋งํ๋ฏ์ด refetcing์ ์ ํํ๋ค๋ ๊ฒ์ ์ ์คํด์ผํ๋ค.
ํ์ง๋ง ์ ์ ์ธ ๋ฐ์ดํฐ ์ฆ, ์ฌ์ฉ์์ ์ํด์๋ ๊ทธ๋ฆฌ๊ณ ์์ผ๋ก๋ ๊ฐ์ ๊ทธ๋๋ก ์ ์งํ์ฌ ์ถ๋ ฅ์์ผ์ค ๋ฐ์ดํฐ๋ผ๋ฉด ์ฌ๋ฌ ํธ๋ฆฌ๊ฑฐ๋ง๋ค refetcing๋ ํ์๋ ์์ ๊ฒ์ด๋ค.
๐ก ํธ๋ฆฌ๊ฑฐ(Trigger) : ์ด๋ ํน์ ํ ๋์์ ๋ฐ์ํด ์๋์ผ๋ก ํ์ํ ๋์์ ์คํํ๋ ๊ฒ์ ๋ป
staleTime
์ 60๋ง ๋ฐ๋ฆฌ์ด๋ก ์ค์ ํ์ฌ ์น์ฌ์ดํธ์ ๋ฐ์ดํฐ๊ฐ 10๋ถ๋์ ์ ์ง๋๊ฒ ํ์.
cacheTime
์ 5๋ถ์ด ๊ธฐ๋ณธ๊ฐ์ธ๋ฐ staleTime
์ด cacheTime
๋ณด๋ค ์ด๊ณผํ๋ ๊ฒ์ ๋ง์ด ์๋๋ค.
๋ง๋ฃ๋ ๋ฐ์ดํฐ๋ฅผ ์
๋ฐ์ดํธํ์ฌ ๋ค์ ๋ถ๋ฌ์ค๋ ๋์ ์บ์ฑ์ ๋ฐฑ์
๋ ๋ด์ฉ์ด ๋ณด์ฌ์ง ๊ฒ์ธ๋ฐ, ๋ง๋ฃ๋ ๋ฐ์ดํฐ๋ณด๋ค ์บ์ฑ์ด ๋จผ์ ๋ง๋ฃ๋๋ค๋ ๊ฒ์ refetcing์ ์คํ์ํค๋ ๋์ ๋ณด์ฌ์ค ํ๋ฉด์ด ์๋ค๋ ๋ป์ด๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฐ๋ผ์, cacheTime
์ 90๋ง ๋ฐ๋ฆฌ์ด๋ก ์ค์ ํด๋ณด์.
โ refetching ์ ์ญ์ค์
export const queryClient = new QueryClient({
defaultOptions: {
queries: {
onError: queryErrorHandler,
staleTime: 600000,
cacheTime: 900000,
refetchOnMount: false,
refetchOnWindowFocus: false,
refetchOnReconnect: false,
},
},
});
์์ ๊ฐ์ด ์ค์ ํ๋ฉด refetching์ด ์์ฃผ ๋ฐ์ํ์ง ์๋๋ค. ์ฆ, ์ ๋ณด์ ๋ณ๋์ด ์ ๊ฑฐ๋ ์ฌ์ฉ์์ ์ํด ์ ํ ๋ณ๊ฒฝ์ด ๋์ง ์๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋ ํ์ด์ง๋ค์ด ์กด์ฌํ ๊ฒฝ์ฐ์ด๋ค. ํ์ง๋ง, ๋ฐ๋๋ก ๋ ์ต์ ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํด์ผํ๋ ํ์ด์ง์์๋ ํญ์ refetching์ด ์ผ์ด๋์ผ ํ๋ค.
๊ทธ๋ ๋ค๋ฉด, ์์ ๊ฐ์ด refetching์ ๋ํด ์ ํ๋ ์ํ์์ refetching์ด ๊ผญ ์ด๋ฃจ์ด์ ธ์ผํ๋ ํ์ด์ง๋ ์ด๋ป๊ฒ ํด์ค์ผํ ๊น?
โ Override
์์์์ ์ค์ ํ ์ต์ ์ ํ์์์ ์ฌ์ ์ํ๋ ๊ฒ์ด๋ค. ์ฆ, refetching์ด ํ์ํ ํ์ด์ง์์ ๋ณ๋๋ก ์ค์ ์ ๋ ํด์ฃผ๋ฉด ๋~
const commonOptions = { staleTime: 0, cacheTime: 300000 };
...
// prefetching ์ผ์ด๋๋ ๋ถ๋ถ์ staleTime, cachTime ์ค์
useEffect(() => {
...
queryClient.prefetchQuery(queryKey, queryFn, commonOptions);
}, [...]);
// ์ฟผ๋ฆฌ์์ฑ ๋ถ๋ถ์์ ์ค์
const { data } = useQuery(queryKey, queryFn,
{
...commonOptions,
refetchOnMount: true,
refetchOnWindowFocus: true,
refetchOnReconnect: true,
},
);
โ Polling
์์์ ์ค์ ํ StaleTime, refetchOn.. ์ต์ ๋ค์ 0์ด๋ก ์ค์ ํ๊ณ , true๋ก ์ค์ ํ์๋คํด๋ ๊ฒฐ๊ตญ ํด๋น ํธ๋ฆฌ๊ฑฐ๊ฐ ๋ฐ์ํ๋ฉด ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
๋ฐ๋ผ์, refetchingInterval์ ์ค์ ํ๋ฉด ํด๋น ์๊ฐ๋ง๋ค ์๋กญ๊ฒ ๋ฐ์ดํฐ๊ฐ ๋ฐ๋๋ ๊ฒ์ ์ค์๊ฐ์ผ๋ก ํ์ธํ ์ ์๋ค.
refetchingInterval ์ต์ ์ ์ฌ์ฉํ์ฌ ์ ํด์ง ์๊ฐ ๊ฐ๊ฒฉ์ผ๋ก refetchingํด๋ณด์.
(์ฐธ๊ณ )
const { data } = useQuery(queryKey, queryFn,
{
...
refetchOnReconnect: true,
refetchInterval: 60000, // 1๋ถ๋ง๋ค
},
);
Test 1๏ธโฃ
refetchInterval์ 10์ด๋ก ์ค์ ํ์์ ๋, ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํธํ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๊ฐ ํ๋ฉด์ 10์ดํ์ ์ค์๊ฐ์ผ๋ก ์ถ๋ ฅ๋ ๊ฒ์ด๋ค.
๐ 1์ด๋ง๋ค ํ๋ฉด์ด refetching๋๊ณ , ๋ฐ์ดํฐ๊ฐ ์ ๋ฐ์ดํธ์ ๋ฐ๋ก ํ๋ฉด์ ์ถ๋ ฅ.
Test 2๏ธโฃ
- refetchInterval์ 1์ด๋ก ์ค์ ํ์์ ๋, ๋ฐ์ดํฐ๋ฅผ ์
๋ฐ์ดํธํ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๊ฐ ํ๋ฉด์ ๊ฑฐ์ ์ฆ์ ์ค์๊ฐ์ผ๋ก ์ถ๋ ฅ๋ ๊ฒ์ด๋ค.
๐ 10์ด๋ง๋ค ํ๋ฉด์ด refetching๋๊ณ , ๋ฐ์ดํฐ๊ฐ ์
๋ฐ์ดํธ์ 10์ด ํ ํ๋ฉด์ ์ถ๋ ฅ.