2017-05-08 230 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根据调用的参数分别缓存结果中的每个字段。如果使用不同的参数调用相同的字段两次,它将有两个缓存条目。

使用Apollo Devtools可以看到缓存的确切内容。如果您确定使用不同参数调用查询会覆盖初始缓存内容,则应考虑在Apollo客户端GitHub存储库上提交问题并进行复制。