Сбой запроса Graphql для глубокого локального состояния в Аполлоне - PullRequest
0 голосов
/ 13 ноября 2018

Я создаю приложение «Реакция Аполлона».Я хочу, чтобы Аполлон управлял моим местным государством.Я хочу структурировать свое локальное состояние, чтобы не все скалярные значения были на верхнем уровне.

Это моя конфигурация:

import React from 'react'
import ReactDOM from 'react-dom'
import ApolloClient from 'apollo-boost'
import gql from 'graphql-tag'
import { InMemoryCache } from 'apollo-cache-inmemory'
import { ApolloProvider, Query } from 'react-apollo'

const defaults = {
    author: null
}
const resolvers = {
    Query: {
        author() {
            return { id: 1 }
        }
    }
}
const typedefs = gql(`
    type Query {
        author: Author
    }
    type Author {
        id: Int
    }
`)
const apolloClient = new ApolloClient({
    clientState: {
        defaults,
        resolvers,
        typedefs
    },
    cache: new InMemoryCache()
});

ReactDOM.render(
    <ApolloProvider client={ apolloClient }>
        <Query query={ gql`{ author @client }` }>
            { ({ data }) => console.log(data.author) || null }
        </Query>
    </ApolloProvider>,
    document.getElementById('app')
)

Затем это приложение регистрирует undefined.Т.е. запрос { author @client { id }} возвращает undefined в data.author.

Следует отметить, что когда я устанавливаю тип автора как Int, значение по умолчанию равно 1, и я выполняю запрос { author @client }, приложение правильно записывает в журнал 1.

Как я могу иметь некоторую структуру в своем локальном состоянии с Apollo?

Это мои соответствующие зависимости:

apollo-cache "^1.1.20"
apollo-cache-inmemory "^1.3.8"
apollo-client "^2.4.5"
apollo-link "^1.0.6"
apollo-link-error "^1.0.3"
apollo-link-http "^1.3.1"
apollo-link-state "^0.4.0"
graphql-tag "^2.4.2"

1 Ответ

0 голосов
/ 13 ноября 2018

Решено:

Очевидно, мне пришлось добавить __typename: 'Author' к автору по умолчанию следующим образом:

const defaults = {
    author: {
        __typename: 'Author'
    }
}
...