javascript - 为什么我不能使用 Apollo Link State 添加待办事项?
问题描述
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 并明确导入了其他所有内容
我不明白代码实际上是相似的bcz的区别(他们正在使用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 };
错误是 -
[网络错误]:TypeError: Object( WEBPACK_IMPORTED_MODULE_0_graphql_tag ["gql"]) 不是函数。(在 App.js 上的 'Object( WEBPACK_IMPORTED_MODULE_0_graphql_tag ["gql"])(_templateObject)','Object( WEBPACK_IMPORTED_MODULE_0_graphql_tag ["gql"])' 是 Object 的一个实例)中
解决方案
它认为gql
不是函数(可能未定义)。应该很容易打印出来看看。如果您的 graphql-tag 版本不好,我不会感到惊讶。将其设置为 package.json 中的固定版本
推荐阅读
- reactjs - React Redux 如何将有效负载目标值传递给操作
- php - 在ajax成功的表中显示数据
- matlab - 使用一个函数作为另一个函数的输入
- git - 推送到.git但拒绝错误的用户,终于解决了
- javascript - 减小材质 ui 中扩展面板的大小
- sql-server - 存储过程在 asp.net web api 中返回错误值
- angular - angular 6 中 jquery 的 $.each 的替代品
- python - 相同的 for_loop 代码,第二次运行打印不同的结果
- kubernetes - 在需要时附加和删除 EKS 工作程序节点以提高成本效益
- java - 将对象传递给新的对象构造函数而不在内部使用它可以吗?