Apollo Client๋ GraphQL API์ ์ํธ์์ฉํ๊ธฐ ์ํ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. React, Vue ๋ฑ ๋ค์ํ ํ๋ก ํธ์๋ ํ๋ ์์ํฌ์์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ํนํ React์์๋ ์ํ ๊ด๋ฆฌ, ์บ์ฑ, ๋ฐ์ดํฐ ํ์นญ์ ํตํฉ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ ๋๊ตฌ๋ก ์๋ฆฌ์ก๊ณ ์์ต๋๋ค.
useQuery, useMutation)@client, makeVar)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>
);
};