Запись вложенного объекта в локальный кеш Apollo - PullRequest
0 голосов
/ 15 января 2020

Я уже смотрел на: Запись вложенного объекта в кеш клиента Apollo

И я думаю, что везде в inte rnet.

Так что я хочу Для этого нужно записать объект в кеш 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

Поиск этой ошибки не дает мне особого ответа.

Могу ли я единственный испытывает это? Я что-то упускаю действительно очевидное?

1 Ответ

0 голосов
/ 15 января 2020

networkStatus был инициализирован как объект, поэтому необходимо выполнить запрос к нему с помощью выбора одного или нескольких полей.

{
  networkStatus @client {
    isConnected
  }
}
...