Работа с помощником для работы в автономном режиме - PullRequest
0 голосов
/ 10 мая 2019

Сегодня я начал изучать офлайновые возможности, предлагаемые Appsync, и это был мой первый раз, когда я был поражен довольно сильно.Я провел день, просматривая несколько уроков, но они никогда не предлагали достаточно для меня, чтобы выполнить задачу, или, может быть, я был просто глуп.Хорошо возвращаясь к документам github для усиления, я наткнулся на это


import { buildMutation } from 'aws-appsync';
import { listTodos } from './graphql/queries';
import { createTodo, CreateTodoInput } from './graphql/mutations';

(async () => {
  const result = await client.mutate(buildMutation(client,
    gql(createTodo),
    {
      inputType: gql(CreateTodoInput),
      variables: {
        input: {
          name: 'Use AppSync',
          description: 'Realtime and Offline',
        }
      }
    },
    (_variables) => [ gql(listTodos) ],
    'Todo'));

  console.log(result);
})();

, поэтому я попытался использовать это.но я получил ошибку client is not defined Но я обернул мой app.js в apolloprovider

const client = new AWSAppSyncClient({
  url: aws_config.aws_appsync_graphqlEndpoint,
  region: aws_config.aws_appsync_region,
  auth: {
    type: aws_config.aws_appsync_authenticationType,
    apiKey: aws_config.aws_appsync_apiKey,
  },
  offlineConfig: {
    callback: (err, succ) => {
      if(err) {
        const { mutation, variables } = err;

        console.warn(`ERROR for ${mutation}`, err);
      } else {
        const { mutation, variables } = succ;

        console.info(`SUCCESS for ${mutation}`, succ);
      }
    },
  },
});

const WithProvider = () => (
  <ApolloProvider client={client}>
    <Rehydrated>
    <ArztRoutes/>
    </Rehydrated>
  </ApolloProvider>

, который, по моему пониманию, передает клиента всем остальным классам, так почему я продолжаю получать эту ошибку и какмогу ли я решить это.Большое спасибо!

1 Ответ

0 голосов
/ 22 мая 2019

Даже при переносе приложения в ApolloProvider вам все равно необходимо определить, как вы получаете доступ к клиенту. НАПРИМЕР. Переменная с именем client не будет доступна глобально, поэтому вам нужно взять ее за дескриптор. Глядя на документы Apollo, вы сможете использовать ApolloConsumer для получения доступа к клиенту (https://www.apollographql.com/docs/react/api/react-apollo#apollo-consumer).

...