将嵌套对象写入本地 Apollo 缓存

Writing nested object to local Apollo cache

我已经看过了:

而且我猜在互联网上的其他地方。

所以我想做的是写一个对象到Apollo缓存,存储在本地。这是我的设置:

const cache = new InMemoryCache()
const client = new ApolloClient({
    uri: '/hasura/v1/graphql',
    cache,
    credentials: 'include',
})

然后我写这个初始化缓存,取自:https://www.apollographql.com/docs/react/data/local-state/#querying-local-state

cache.writeData({
    data: {
        todos: [],
        visibilityFilter: 'SHOW_ALL',
        networkStatus: {
            __typename: 'NetworkStatus',
            id: 1,
            isConnected: false,
        },
    },
})

现在,当我想使用此查询查询缓存时:

const lolquery = gql`{
    visibilityFilter @client
}`

const result = cache.readQuery({ query: lolquery })
console.log(result)

我可以获得 visibilityFilter 和待办事项,但是当我尝试查询 networkStatus 时,即

const lolquery = gql`{
    networkStatus @client
}`

我收到以下错误:

Uncaught Invariant Violation: Invariant Violation: 10

用谷歌搜索这个错误并没有给我太多答案。

我是唯一遇到这种情况的人吗?我错过了一些很明显的东西吗?

networkStatus 被初始化为一个对象,因此您必须使用一个或多个字段的子选择来查询它。

{
  networkStatus @client {
    isConnected
  }
}