【问题标题】:Why can't I add a Todo using Apollo Link State?为什么我不能使用 Apollo Link State 添加待办事项?
【发布时间】:2018-10-23 05:38:57
【问题描述】:

Todo 永远不会被添加。可见性过滤器工作和远程 Coinbase 提取工作。

这是我的仓库???

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

&这里是同一个代码沙箱????

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

该示例类似于代码框之一,只有远程 URI 用于从 coinbase API 获取某些硬币

我复制了同样的例子

只需 2 处更改

第一个变化是我添加了一个 HTTPLink 用于使用 Coinbase API 获取远程数据

第二个变化是我没有使用 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 };

错误是-

[网络错误]:类型错误: Object(WEBPACK_IMPORTED_MODULE_0_graphql_tag["gql"]) 不是 功能。 (在 '对象(WEBPACK_IMPORTED_MODULE_0_graphql_tag["gql"])(_templateObject)', 'Object(WEBPACK_IMPORTED_MODULE_0_graphql_tag["gql"])' 是一个 App.js:46 上的 Object 实例)

【问题讨论】:

    标签: javascript reactjs apollo react-apollo apollo-client


    【解决方案1】:

    找到了解决办法。我想我必须习惯于正确阅读日志。

    我在./resolvers/todos 文件中犯了一个小错误,其他地方都很好

    我实际上将 gql 作为命名导出导入 -

    import { gql } from 'graphql-tag';

    当我应该使用默认导出时 -

    import gql from 'graphql-tag';

    【讨论】:

      【解决方案2】:

      它认为gql 不是函数(可能未定义)。应该很容易打印出来看看。如果您的 graphql-tag 版本不好,我不会感到惊讶。将其设置为 package.json 中的固定版本

      【讨论】:

      • 但它适用于其他一切,例如获取 Coinbase API 和过滤器切换
      • 我将其更改为固定版本,但它不起作用:(
      • 我现在发现的问题是我在任何地方都做了import gql from "graphql-tag";,在解析器中我做了import { gql } from "graphql-tag";。无论如何它现在可以工作了:)
      猜你喜欢
      • 2017-12-05
      • 1970-01-01
      • 1970-01-01
      • 2021-10-16
      • 2018-06-19
      • 1970-01-01
      • 2019-03-31
      • 2018-11-10
      • 1970-01-01
      相关资源
      最近更新 更多