React Apollo:一个查询,多个参数 - 如何缓存?

时间:2017-05-08 00:22:23

标签: reactjs apollo react-apollo apollo-client

我很困惑。

假设我目前有以下查询:

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

默认情况下,不传递任何过滤器,因此返回所有内容。

现在,我想使用过滤器重新获取:

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

以上似乎覆盖了原始查询的本地缓存

我正在编写一个离线优先应用程序,我希望将这些不同的筛选排列分别缓存,而不是覆盖原始缓存。

如何克服这种缓存难度并让Apollo分别用不同的参数缓存这些查询?

1 个答案:

答案 0 :(得分:4)

Apollo根据调用它的参数分别缓存结果中的每个字段。如果使用不同的参数两次调用相同的字段,它将有两个缓存条目。

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