본문 바로가기
프론트엔드/GraphQL

[GraphQL] 5. fragment

by zzocco94 2023. 2. 16.

Fragment

- 여러 쿼리에 사용될 수 있는, 재사용 가능한 필드셋
- 중복을 줄임으로써 전체 코드 간소화

 

Usage

- 재사용되는 요소들 fragment로 분리

 

const Names = gql`
   fragment names on People {
       first_name
       last_name 
   }
`;

const HealthInfo = gql`
   fragment healthInfo on People {
       sex
       blood_type 
   }
`;

const WorkInfo = gql`
   fragment workInfo on People {
       serve_years
       role
       team
   }
`;

 

- 쿼리 적용

 

const GET_PEOPLE = gql`
    query GetPeople {
      people {
        id
        ...names
        ...healthInfo
      }
    }
    ${Names}
    ${HealthInfo}
`;

 

writeFragment

- 캐시에 데이터 쓰기
- 캐시된 데이터의 변경 사항은 GraphQL 서버로 푸시되지 않는다.

 

const handleBtnClick = () => {
      cache.writeFragment({
        id: `Movie:${id}`,
        fragment: gql`
          fragment MovieFragment on Movie {
            isLiked
          }
        `,
        data: {
          isLiked: !data.movie.isLiked,
        },
      });
    };

 

 

참고 자료

- GraphQL 공식 문서 / Fragment (링크)

- 노마드코더 [GraphQL로 영화 웹앱 만들기] (링크)

- 얄코 GraphQL 강의 (링크)

'프론트엔드 > GraphQL' 카테고리의 다른 글

[GraphQL] 4. local only field  (0) 2023.02.15
[GraphQL] 3. useQuery  (0) 2023.02.15
[GraphQL] 2. Apollo client 생성  (0) 2023.02.15
[GraphQL] 1. 설치  (0) 2023.02.14

댓글