This message was deleted.
# 질문
s
This message was deleted.
t
클라이언트 환경이랑 GraphQL 클라이언트는 어떤거 쓰세요?
y
리액트 + 타입스크립트 + 아폴로 입니다
t
Mutation 응답은 어떻게 오나요?
Apollo면 Mutation 응답으로 변경된 객체를 내려주면 자동으로 전파돼요!
y
변경된 객체를 내려주고 있습니당
t
그러면 자동으로 전파돼요!
y
그런데 변경된 객체를 어디로 내려주는건가요?
t
Apollo가 알아서 내부 Cache(Redux)를 통해서 해당 id를 가지고 있는 객체의 object를 전부 바꿔요 ㅎㅎ
예를 들면,
y
저는 화면에서 렌더링이 반영이 안되고 있는 상황입니다. 😭
t
Copy code
type Item {
  id: ID!
  checked: Boolean!
}
이런 모델에서
음? 그러면 Apollo DevTool 크롬에 설치하셔서 Cache 한번 확인해보세요 ㅎㅎ
아니면 cache를 console.log 찍어보셔도 되구요
Mutation 쿼리 한번 보여주실래요??
y
Copy code
mutation toggleTagStatus($input: ToggleTagStatusArgs!, $language: LanguageType) {
  toggleTagStatus(input: $input) {
    code
    createdAt
    updatedAt
    type
    isRecommend
    priority
    translations(language: $language) {
      code
      createdAt
      updatedAt
      language
      tagCode
      name
    }
  }
}
이게 mutation 쿼리이구요
목록 쿼리는
Copy code
query tags($input: TagPageArgs!, $language: LanguageType) {
  tags(input: $input) {
    totalCount
    edges {
      code
      createdAt
      updatedAt
      type
      isRecommend
      priority
      translations(language: $language) {
        code
        createdAt
        updatedAt
        language
        tagCode
        name
      }
    }
  }
}
Copy code
이렇습니다
t
id 필드가 없네요
y
아, 저희는 id가 code 입니다
id 대신 code라고 써요
t
일단은 id 필드가 컨벤션인걸로 알고있어서, code 필드의 값이 키로 캐시에 잘 들어가는지? 확인해보셔야될꺼같구
바뀐값으로 Mutation 응답이 잘 오는지도 확인해보셔야될꺼같아요
y
아폴로에서 자동 전파 할때 기본적으로 id 값을 감지한다는 말씀이신거죠?
t
흠… apollo-link-state 사용할때 그랬던거같은데, 확인해보시면 될꺼같아요!
devtool 설치하시면 cache 탭있어서
어떤 값들이 캐시에 들어가있는지 볼 수 있어요!
만약에 제대로 안들어가고있다고 판단되시면
요렇게 Custom Identifier 설정하실 수 있어요
y
아하 감사합니다
t
By default, the 
InMemoryCache
 attempts to generate a unique identifier for an object by combining the object’s 
__typename
 field with its 
id
 or 
_id
 field.
맞네요 기본적으로 id 필드로 한대요
👍 1
y
와 해결됐습니다 감사합니다
h
캐시리디렉트 사용 주의하세요 v3에 api 싹다 바뀝니다
😱 1