๐Ÿงฉ ๊ฐœ์š”

Apollo Client๋Š” GraphQL API์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. React, Vue ๋“ฑ ๋‹ค์–‘ํ•œ ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํŠนํžˆ React์—์„œ๋Š” ์ƒํƒœ ๊ด€๋ฆฌ, ์บ์‹ฑ, ๋ฐ์ดํ„ฐ ํŽ˜์นญ์„ ํ†ตํ•ฉ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ๋กœ ์ž๋ฆฌ์žก๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿš€ ์ฃผ์š” ํŠน์ง•


๐Ÿ› ๏ธ ๊ธฐ๋ณธ ์„ค์ •

yarn add @apollo/client graphql
// apollo.ts
import { ApolloClient, InMemoryCache } from '@apollo/client';

export const client = new ApolloClient({
  uri: '/graphql',
  cache: new InMemoryCache(),
});
// main.tsx
import { ApolloProvider } from '@apollo/client';
import App from './App';
import { client } from './apollo';

<ApolloProvider client={client}>
  <App />
</ApolloProvider>


๐Ÿ“ก ๋ฐ์ดํ„ฐ ์š”์ฒญ (์ฟผ๋ฆฌ)

import { useQuery, gql } from '@apollo/client';

const GET_USERS = gql`
  query GetUsers {
    users {
      id
      name
    }
  }
`;

const UserList = () => {
  const { data, loading, error } = useQuery(GET_USERS);

  if (loading) return <p>๋กœ๋”ฉ ์ค‘...</p>;
  if (error) return <p>์˜ค๋ฅ˜ ๋ฐœ์ƒ: {error.message}</p>;

  return (
    <ul>
      {data.users.map((user) => (
        <li key={user.id}>{user.name}</li>
      ))}
    </ul>
  );
};

โœ๏ธ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ (๋ฎคํ…Œ์ด์…˜)