React Apollo:一个查询,多个参数——如何缓存?
React Apollo: One query, multiple arguments - How to cache?
对此我很纳闷
假设我目前有以下查询:
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 存储库上提交问题并进行复制。
对此我很纳闷
假设我目前有以下查询:
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 存储库上提交问题并进行复制。