我很困惑. 假设我目前有以下查询: export const getPokemon = gql` query getPokemon($filters: AssetFilters) { pokemon(filters: $filters) { name, generation, exp } }`; 默认情况下,不传递任何过滤器,因此返回所有内容
假设我目前有以下查询:
export const getPokemon = gql` query getPokemon($filters: AssetFilters) { pokemon(filters: $filters) { name, generation, exp } }`;
默认情况下,不传递任何过滤器,因此返回所有内容.
现在,我想用过滤器重新获取:
this.props.refetch({ filters: { generation: '3rd' } });
以上似乎覆盖了原始查询的本地缓存!
我正在编写一个离线优先应用程序,我希望这些不同的过滤排列可以单独缓存,而不是覆盖原始缓存.
我如何克服这个缓存难题并让Apollo分别用不同的参数缓存这些查询?
Apollo根据调用它的参数分别缓存结果中的每个字段.如果使用不同的参数调用相同的字段两次,则它将具有两个缓存条目.使用Apollo Devtools,您可以看到缓存的确切内容.如果确定使用不同参数调用查询会覆盖初始缓存内容,则应考虑使用复制在Apollo Client GitHub存储库中提交问题.