Почему я не могу добавить Todo, используя Apollo Link State? - PullRequest
0 голосов
/ 13 мая 2018

Todo никогда не добавляется. Работает фильтр видимости и работает удаленный выбор Coinbase.

Вот мой репо 100

https://github.com/deadcoder0904/apollo-coinbase

и вот та же песочница с кодом ?

https://codesandbox.io/s/github/apollographql/apollo-link-state/tree/master/examples/todo

Пример аналогичен одному из кодов и коробки с только удаленным URI для выборки из API-интерфейса coinbase для некоторых монет

Я скопировал тот же пример

Всего 2 изменения

1-е изменение - я добавил HTTPLink для извлечения удаленных данных с использованием Coinbase API

2-е изменение: я не использовал Apollo-Boost и явно импортировал все остальное

Я не понимаю разницу, потому что код буквально похож (хотя они используют apollo-boost, и я использовал каждый кусок по-разному и сожрал вместе)

Мутация addTodo не работает лично в TodoForm.js:)

TodoForm.js

import React from "react";
import gql from "graphql-tag";
import { Mutation } from "react-apollo";

const ADD_TODO = gql`
  mutation addTodo($text: String!) {
    addTodo(text: $text) @client {
      id
    }
  }
`;

const TodoForm = () => (
  <Mutation mutation={ADD_TODO}>
    {addTodo => {
      let input;
      return (
        <form
          onSubmit={e => {
            e.preventDefault();
            if (!input.value.trim()) return;
            addTodo({ variables: { text: input.value } });
            input.value = "";
          }}
        >
          <input
            type="text"
            ref={node => {
              input = node;
            }}
          />
          <button type="submit">Add Todo</button>
        </form>
      );
    }}
  </Mutation>
);

export { TodoForm };

Ошибка -

[Ошибка сети]: Ошибка типа: Объект ( WEBPACK_IMPORTED_MODULE_0_graphql_tag ["gql"]) не является функция. (В 'Объект ( WEBPACK_IMPORTED_MODULE_0_graphql_tag [ "GQL"]) (_ templateObject)', 'Объект ( WEBPACK_IMPORTED_MODULE_0_graphql_tag ["gql"]) "является экземпляр объекта) в App.js: 46

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Нашел решение. Наверное, мне нужно привыкнуть к чтению логов правильно.

Я допустил одну маленькую ошибку в ./resolvers/todos файле, и везде было нормально

Я фактически импортировал gql как именованный экспорт, например -

import { gql } from 'graphql-tag';

когда я должен был использовать экспорт по умолчанию, например -

import gql from 'graphql-tag';

0 голосов
/ 13 мая 2018

Он думает, что gql - это нечто иное, чем функция (вероятно, неопределенная). Должно быть достаточно легко распечатать и посмотреть. Я не удивлюсь, если у вас плохая версия graphql-tag. Установите фиксированную версию в package.json

...