【问题标题】:Writing nested object to local Apollo cache将嵌套对象写入本地 Apollo 缓存
【发布时间】:2020-05-02 01:22:49
【问题描述】:

我已经看过了:Writing nested object to Apollo client 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 和 todos,但是当我尝试查询 networkStatus 时,即

const lolquery = gql`{
    networkStatus @client
}`

我收到以下错误:

未捕获的不变违规:不变违规:10

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

只有我一个人遇到这种情况吗?我是否遗漏了一些非常明显的东西?

【问题讨论】:

    标签: apollo react-apollo apollo-client


    【解决方案1】:

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

    {
      networkStatus @client {
        isConnected
      }
    }
    

    【讨论】:

    • 好吧,哇,真的。我不知道我怎么没有尝试过这个......但我想是因为我的最终目标是获取对象列表/我不知道我是否读过在获取对象时需要执行此规范的任何地方GraphQL。多么令人沮丧……但谢谢!
    猜你喜欢
    • 2019-07-29
    • 2021-06-10
    • 2020-03-09
    • 2020-10-25
    • 2017-09-14
    • 2013-02-23
    • 1970-01-01
    • 2019-08-08
    • 2018-12-26
    相关资源
    最近更新 更多