Как я могу использовать `schema` в клиентском кэше apollo? - PullRequest
0 голосов
/ 02 июля 2019

Я использую apollo-client в проекте реагирования для управления состоянием пользовательского интерфейса. Я определяю тип схемы для мутации apollo, но она не работает.

Ниже описано, как создать экземпляр apollo client.

const cache = new InMemoryCache();

export const createClient = () => {
  return new ApolloClient({
    cache,
    resolvers: {
      Mutation: {
        ...alertResolvers
      },
    },
    typeDefs: [alertTypeDefs]
  });
};

Ниже кода приведено определение схемы типа. Как видите, я создал showErrorAlert тип возврата Alert.

export const alertTypeDefs = gql`
  type Alert {
    id: ID!
    message: String!
    type: String!
    duration: Int!
  }
  extend type Mutation {
    showErrorAlert(message: String!): Alert
  }
`;

Я использую приведенный ниже код для отправки мутации. Как вы можете видеть, он не возвращает duration в возвращаемом объекте. Но приложение работает без ошибок. Кажется, что тип не влияет на приложение.

gql`
  mutation showErrorAlert($message: String!) {
    showErrorAlert(message: $message)  @client {
      id
      message
      type
    }
  }
`;

1 Ответ

0 голосов
/ 02 июля 2019

Из документов :

При желании можно установить схему на стороне клиента, которая будет использоваться с клиентом Apollo, либо с помощью параметра typeDefs конструктора ApolloClient, либо с помощью метода setTypeDefs API локального состояния ... Эта схема не используется для проверки, как она есть на сервере, потому что модули graphql-js для проверки схемы значительно увеличат размер вашего пакета. Вместо этого ваша клиентская схема используется для самоанализа в Apollo Client Devtools, где вы можете изучить свою схему в GraphiQL.

Другими словами, единственная точка предоставления typeDefs для локального состояния - это включение запроса локального состояния через GraphiQL в Apollo Client Devtools.

Нет проверки типа для локального состояния, хотя клиент будет выдавать, если в кеше имеется несоответствие общей формы объекта по сравнению с тем, что запрашивается.

...