Apollo Client

https://www.apollographql.com/docs/react/

GraphQL ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ์ปฌ๊ณผ ์›๊ฒฉ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

๋ฐ์ดํ„ฐ๋ฅผ ํŽ˜์น˜, ์บ์‹œ, ์ˆ˜์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์‹œ ์ž๋™์œผ๋กœ UI ์—…๋ฐ์ดํŠธ ํ•œ๋‹ค.

ํ•ต์‹ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ@apollo/client์— React๊ฐ€ ์ ‘๋ชฉ๋˜์–ด ์žˆ๋‹ค.

๊ธฐ๋ณธ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

ref. https://www.apollographql.com/docs/react/get-started/arrow-up-right

1. ์„ค์น˜

npm install @apollo/client graphql

  • @apollo/client: Apollo Client ์„ธํŒ…์‹œ ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋กœ, in-memory ์บ์‹œ, ๋กœ์ปฌ ์ƒํƒœ ๊ด€๋ฆฌ, ์—๋Ÿฌ ์ฒ˜๋ฆฌ, ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํฌํ•จํ•œ๋‹ค.

  • graphql: GraphQL ์ฟผ๋ฆฌ ํŒŒ์‹ฑ์„ ๋‹ด๋‹นํ•˜๋Š” ํŒจํ‚ค์ง€

2. ApolloClientarrow-up-right ์ดˆ๊ธฐํ™”

2-1.ํ•„์š”ํ•œ ๋ชจ๋“ˆ ์ถ”๊ฐ€

import {
  ApolloClient,
  InMemoryCache,
  ApolloProvider,
  useQuery,
  gql
} from "@apollo/client";

2-2. ApolloClient ์ดˆ๊ธฐํ™”

uri, cache ์†์„ฑ์„ ๊ฐ€์ง„ ์„ค์ • ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌํ•œ๋‹ค.

  • uri GraphQL ์„œ๋ฒ„ URL

  • cache InMemoryCache ์ธ์Šคํ„ด์Šค, Apollo Client๊ฐ€ ์ฟผ๋ฆฌ ํŽ˜์น˜ ํ›„ ๊ฒฐ๊ณผ๋ฅผ ์บ์‹ฑํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

์ฐธ๊ณ : ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์‚ฌ์šฉ ์˜ˆ์‹œ

3. ๋ฆฌ์•กํŠธ ์—ฐ๋™ํ•˜๊ธฐ

์ฟผ๋ฆฌ๋ฅผ ์—ฐ๋™ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ์ž๋™์œผ๋กœ UI๋ฅผ ์—…๋ฐ์ดํŠธ ํ•  ์ˆ˜ ์žˆ๋‹ค.

ApolloProvider(๋ฆฌ์•กํŠธ Context.Provider ์™€ ์œ ์‚ฌ) ์ปดํฌ๋„ŒํŠธ๋กœ ๋ฆฌ์•กํŠธ app๋ฅผ ๊ฐ์‹ธ Apollo Client Context ์•ˆ์— ๋‘”๋‹ค.

GraphQL data ๊ฐ€ ํ•„์š”ํ•œ ์ปดํฌ๋„ŒํŠธ ์ตœ ์ƒ์œ„์— ๋‘์–ด ์–ด๋””์„œ๋“  ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.

4. useQuery ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ

useQuery: UI ์™€ GraphQL ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๋Š” ๋ฆฌ์•กํŠธ ํ›…

Last updated