Apollo 客户端是否在 React 中缓存嵌套对象?
Does the Apollo client cache nested objects in React?
进行以下查询:
query Foo {
foo {
id
bar(id: 1) {
id
baz
}
}
}
query Bar {
bar(id: 1) {
id
baz
}
}
有时,运行第二次查询会给我一个 bar
的缓存版本。其他时候,它不会,但我不确定这是因为查询是 运行 倍数还是因为这是 React 中 Apollo 客户端的默认行为。
不,它没有(至少截至 2019 年 11 月)。要在 Foo
查询 运行 时将 bar
对象放入缓存中,您需要像这样创建内存缓存:
import { InMemoryCache } from 'apollo-cache-inmemory';
const cache = new InMemoryCache({
cacheRedirects: {
Query: {
bar: (_, args, { getCacheKey }) =>
getCacheKey({ __typename: 'Bar', id: args.id })
},
},
});
另见:
进行以下查询:
query Foo {
foo {
id
bar(id: 1) {
id
baz
}
}
}
query Bar {
bar(id: 1) {
id
baz
}
}
有时,运行第二次查询会给我一个 bar
的缓存版本。其他时候,它不会,但我不确定这是因为查询是 运行 倍数还是因为这是 React 中 Apollo 客户端的默认行为。
不,它没有(至少截至 2019 年 11 月)。要在 Foo
查询 运行 时将 bar
对象放入缓存中,您需要像这样创建内存缓存:
import { InMemoryCache } from 'apollo-cache-inmemory';
const cache = new InMemoryCache({
cacheRedirects: {
Query: {
bar: (_, args, { getCacheKey }) =>
getCacheKey({ __typename: 'Bar', id: args.id })
},
},
});
另见: