Apollo Client
https://www.apollographql.com/docs/react/
GraphQL ์ ์ฌ์ฉํ์ฌ ๋ก์ปฌ๊ณผ ์๊ฒฉ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ ์ ์๋ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๋ฐ์ดํฐ๋ฅผ ํ์น, ์บ์, ์์ ํ ๋ ์ฌ์ฉํ๋ค.
๋ฐ์ดํฐ ๋ณ๊ฒฝ์ ์๋์ผ๋ก UI ์
๋ฐ์ดํธ ํ๋ค.
ํต์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ@apollo/client์ React๊ฐ ์ ๋ชฉ๋์ด ์๋ค.
๊ธฐ๋ณธ ์ฌ์ฉ ๋ฐฉ๋ฒ
ref. https://www.apollographql.com/docs/react/get-started/
npm install @apollo/client graphql
@apollo/client: Apollo Client ์ธํ
์ ํ์ํ ํจํค์ง๋ก, in-memory ์บ์, ๋ก์ปฌ ์ํ ๊ด๋ฆฌ, ์๋ฌ ์ฒ๋ฆฌ, ๋ฆฌ์กํธ ์ปดํฌ๋ํธ๋ฅผ ํฌํจํ๋ค.
graphql: GraphQL ์ฟผ๋ฆฌ ํ์ฑ์ ๋ด๋นํ๋ ํจํค์ง
2-1.ํ์ํ ๋ชจ๋ ์ถ๊ฐ
import {
ApolloClient,
InMemoryCache,
ApolloProvider,
useQuery,
gql
} from "@apollo/client";
2-2. ApolloClient ์ด๊ธฐํ
uri, cache ์์ฑ์ ๊ฐ์ง ์ค์ ๊ฐ์ฒด๋ฅผ ์ ๋ฌํ๋ค.
cache InMemoryCache ์ธ์คํด์ค, Apollo Client๊ฐ ์ฟผ๋ฆฌ ํ์น ํ ๊ฒฐ๊ณผ๋ฅผ ์บ์ฑํ๊ธฐ ์ํด ์ฌ์ฉ
์ฐธ๊ณ : ์๋ฐ์คํฌ๋ฆฝํธ ์ฌ์ฉ ์์
3. ๋ฆฌ์กํธ ์ฐ๋ํ๊ธฐ
์ฟผ๋ฆฌ๋ฅผ ์ฐ๋ํ์ฌ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๋ฉด ์๋์ผ๋ก UI๋ฅผ ์
๋ฐ์ดํธ ํ ์ ์๋ค.
ApolloProvider(๋ฆฌ์กํธ Context.Provider ์ ์ ์ฌ) ์ปดํฌ๋ํธ๋ก ๋ฆฌ์กํธ app๋ฅผ ๊ฐ์ธ Apollo Client Context ์์ ๋๋ค.
GraphQL data ๊ฐ ํ์ํ ์ปดํฌ๋ํธ ์ต ์์์ ๋์ด ์ด๋์๋ ์ ๊ทผํ ์ ์๊ฒ ํ๋ค.
4. useQuery ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
useQuery: UI ์ GraphQL ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๋ ๋ฆฌ์กํธ ํ