[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

🛠 기타/WEB

React - GraphQL Client (with Apollo)

inu 2021. 1. 12. 18:50
반응형

Apollo, GraphQL in React

  • Apollo? 애플리케이션 클라이언트를 백엔드 서비스에 원활하게 연결하는 데이터 그래프 를 구축하기위한 플랫폼

패키지 설치

npm install @apollo/client graphql
  • @apollo/client : Apollo Client를 설정하는 데 필요한 대부분의 것이 포함
  • graphql : GraphQL 쿼리 분석을 위한 로직 제공

클라이언트 생성

import { ApolloClient, InMemoryCache } from '@apollo/client';

const client = new ApolloClient({
    uri: 'http://localhost:4000/',
    cache: new InMemoryCache()
});

React에 클라이언트 연결

import { ApolloProvider } from '@apollo/client';
import client from './apollo'

ReactDOM.render(
  <ApolloProvider client={client}>
      <App />
  </ApolloProvider>
);
  • Apollo provider : 생성된 클라이언트를 context에 배치해 컴포넌트 트리 어느 곳에서든 액세스 가능하도록 한다.
  • 이제 해당 App 컴포넌트 트리 어느 곳에서든 client 활용이 가능해진다.

Query문 작성 및 활용

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

const GET_MOVIES = gql`
{
    movies{
        title
    }
}
`;

export default () => {
    const { loading, error, data } = useQuery(GET_MOVIES);
    return <h1>{loading ? "Loading..." : data.title}</h1>;
};
  • gql : query문을 작성 가능하도록하고, 이를 객체로 만들어준다. (해당 코드에서는 movies query를 요청하고, 여기서 title들만 받아오도록 했다.)
  • useQuery : gql로 만들어진 query문 객체를 기반으로 API 서버에서 값을 얻어온다.
  • loading : data가 불러와지는 도중엔 true, data가 모두 불러와지면 false. 해당 값을 이용해 데이터 로드 여부를 체크해야 제대로 페이지를 구성할 수 있다.
  • error : 에러값
  • data : GraphQL API에서 얻어온 실질적 Data
반응형

'🛠 기타 > WEB' 카테고리의 다른 글

Node.js - Sequelize  (0) 2021.01.28
Nest.js - nest.js 환경에서 GraphQL 사용하기  (0) 2021.01.13
React - Styled Components  (0) 2021.01.12
React - React Router  (0) 2021.01.11
React Hooks - useRef  (0) 2021.01.11