์บ์๋, ๋ฐ์ดํฐ๋ฅผ ์์๋ก ์ ์ฅํด๋๋ ๊ณณ
๋๋ hooks๋ฅผ ์ฌ์ฉํด์ useQuery๋ก ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๋ ๋ฐฉ๋ฒ์ ์ด์ฉํ๊ณ ์๋ค. ์๋ํ๋ฉด ์ฝ๋๋ ๊ฐ๊ฒฐํด์ง๊ณ , loading, error, refetch, data ๋ฑ์ ์ ๊ณตํด์ค์ผ๋ก์จ ์๋ฌํธ๋ค๋ง, ์ํ์ฒ๋ฆฌ, ์ฌ์์ฒญ ๋ฑ์ ๊ฐ๊ฒฐํ๊ฒ ์ฒ๋ฆฌํ ์ ์๋ค.
const { loading, error, refetch, data } = useQuery(Queries.TEMP_DATA, {
fetchPolicy: 'cache-and-network'
});
์์ ์ด์ผ๊ธฐํ๋ ๊ฒ์ฒ๋ผ, graphQL ์๋ฒ์ ์์ฒญ ์ ๋ชจ๋ ์์ฒญ์ด POST๋ก ๊ฐ๊ธฐ ๋๋ฌธ์, GET ์์ฒญ๋ง์ ์ฒ๋ฆฌํ๋ ๋ธ๋ผ์ฐ์ ์บ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค. Apollo client cache๋ฅผ ์ฌ์ฉํจ์ผ๋ก์ ๋จ์ํ ์บ์๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ ๋์ด์ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
์ด ๊ธ์์๋ cache ์ต์ ์ ์ข ๋ ์์ธํ ์ ์ด๋ณด๋ คํ๋ค.
fetchPolicy๋ฅผ ํตํด ๋ฐ์ดํฐ ์บ์์ ์ํธ ์์ฉํ๋ ๋ฐฉ์์ ์ง์ ํ ์ ์๋ค. ์บ์์์ ์ฝ๊ธฐ๋ฅผ ์๋ํ๊ณ ์ฟผ๋ฆฌ์ ๋ฐ์ดํฐ๊ฐ ์บ์์ ์์ผ๋ฉด Apollo๋ ๋จ์ํ ์บ์์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ๋ค. ์ฟผ๋ฆฌ์ ์ ์ฒด ๋ฐ์ดํฐ๊ฐ ์บ์์ ์์ผ๋ฉด Apollo๋ ๋คํธ์ํฌ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ์์ฒญ์ ์คํํ๋ค.
๐คญcache-first ํญ์ ์บ์๋ฅผ ๋จผ์ ํ์ธํ๋ค. ์บ์๊ฐ ๋ฐ์ดํฐ์ ์๋ค๋ฉด network ์์ฒญ์ ๋ณด๋ธ๋ค.
๐คญnetwork-only ์บ์์์ ์ด๊ธฐ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ์ง ์๊ณ ํญ์ network ์์ฒญ์ ๋ณด๋ธ๋ค.
๐คญcache-only ์บ์๋ง ํ์ธํ๋ค. ์บ์์ ๋ฐ์ดํฐ๊ฐ ์๋ค๋ฉด ์๋ฌ๋ฅผ ๋ฐํํ๋ค.
๐คญcache-and-network ๋จผ์ ์บ์๋ฅผ ํ์ธํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ๋ค.(์ ๋ฐ์ดํธ ๋์ง ์์ ๋ฐ์ดํฐ์ผ์ง๋ผ๋) ์ดํ network์์ฒญ์ ํ์ฌ ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ ์บ์๋ฅผ ์ ๋ฐ์ดํธํ๊ณ , ์ ๋ฐ์ดํธ๋ ์บ์ฑ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ๋ฐํํ๋ค.
๐คญno-cache ์บ์๋ฅผ ํ์ธํ์ง ์๊ณ ํญ์ network ์์ฒญ์ ๋ณด๋ธ๋ค. network-only ์ ์ฑ ๊ณผ ๋ฌ๋ฆฌ ์ฟผ๋ฆฌ๊ฐ ์๋ฃ๋ ํ ์บ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ง ์๋๋ค.