Apollo客户端是否在React中缓存嵌套对象?

时间:2019-11-13 17:55:50

标签: graphql apollo apollo-client apollo-cache-inmemory

进行以下查询:

query Foo {
  foo {
    id
    bar(id: 1) {
      id
      baz
    }
  }
}

query Bar {
  bar(id: 1) {
    id
    baz
  }
}

有时,运行第二个查询会为我提供bar的缓存版本。在其他时候,它不是,但是我不确定这是因为查询多次运行,还是因为这是React中Apollo客户端的默认行为。

1 个答案:

答案 0 :(得分:0)

不,不是(至少到2019年11月为止)。要在运行bar查询时将Foo对象放入缓存中,您需要创建如下的内存中缓存:

import { InMemoryCache } from 'apollo-cache-inmemory';

const cache = new InMemoryCache({
  cacheRedirects: {
    Query: {
      bar: (_, args, { getCacheKey }) =>
        getCacheKey({ __typename: 'Bar', id: args.id })
    },
  },
});

另请参阅: