2017-05-08 11 views
4

나는 이것에 당혹 스럽다. 어떤 필터가 너무 모든 것을 전달되지 기본적으로React Apollo : 하나의 쿼리, 여러 개의 인수 - 캐시하는 방법?

export const getPokemon = gql` 
    query getPokemon($filters: AssetFilters) { 
    pokemon(filters: $filters) { 
     name, 
     generation, 
     exp 
    } 
    }`; 

가 반환됩니다

은 가정하자 저는 현재 다음 쿼리를 가지고있다.

지금, 나는 같은 필터를 다시 반입하려는 :

this.props.refetch({ 
    filters: { 
    generation: '3rd' 
    } 
}); 

은 위의 원래 쿼리의 로컬 캐시를 무시 보인다!

오프라인 우선 응용 프로그램을 작성 중이므로 원래 캐시를 덮어 쓰지 않고 이러한 필터링 순열을 개별적으로 캐시하고 싶습니다.

이 캐싱 난이도를 극복하고 Apollo가 이러한 쿼리를 다른 인수로 개별적으로 캐싱하도록하려면 어떻게해야합니까?

답변

3

아폴로는 호출 된 인수를 기반으로 결과의 각 필드를 별도로 캐시합니다. 서로 다른 인수를 사용하여 동일한 필드를 두 번 호출하면 두 개의 캐시 항목이 생깁니다.

Apollo Devtools를 사용하면 캐시의 정확한 내용을 볼 수 있습니다. 다른 인수를 사용하여 쿼리를 호출하면 초기 캐시 내용을 덮어 쓰는 것으로 판단되면 Apollo Client GitHub 저장소에서 복제본을 사용하여 문제를 제기하는 것이 좋습니다.