reactjs - Apollo 客户端没有读取使用 useQuery 钩子传入的变量
问题描述
将变量传递到 useQuery 挂钩时遇到一个奇怪的问题。
查询:
const GET_USER_BY_ID= gql`
query($id: ID!) {
getUser(id: $id) {
id
fullName
role
}
}
`;
调用查询:
const DisplayUser: React.FC<{ id: string }> = ({ id }) => {
const { data, error } = useQuery(GET_USER_BY_ID, {
variables: { id },
});
return <div>{JSON.stringify({ data, error })}</div>;
};
渲染组件:
<DisplayUser id="5e404fa72b819d1410a3164c" />
这会产生错误:
"Argument \"id\" of required type \"ID!\" was provided the variable \"$id\" which was not provided a runtime value."
从 GraphQL Playground 调用查询返回预期结果:
{
"data": {
"getUser": {
"id": "5e404fa72b819d1410a3164c",
"fullName": "Test 1",
"role": "USER"
}
}
}
并在没有变量的情况下调用查询,而是对 id 进行硬编码:
const GET_USER_BY_ID = gql`
query {
getUser(id: "5e404fa72b819d1410a3164c") {
id
fullName
role
}
}
`;
const DisplayUser: React.FC = () => {
const { data, error } = useQuery(GET_USER_BY_ID);
return <div>{JSON.stringify({ data, error })}</div>;
};
也返回预期的结果。
我还尝试测试一个类似的查询,该查询将firstName: String!
其作为参数,该参数也会产生一个错误,指出该变量未提供运行时值。在对查询字符串中的值进行硬编码时,此查询也可以按预期工作。
这个项目今天开始并使用"apollo-boost": "^0.4.7"
,"graphql": "^14.6.0"
和"react-apollo": "^3.1.3"
.
解决方案
[解决了]
在阅读堆栈跟踪时,我注意到问题是引用graphql-query-complexity
了我用于验证规则的问题。我删除了验证规则,现在一切正常!当然,我目前没有验证,但至少我可以从这里工作。感谢所有花时间回复的人!
推荐阅读
- swift - 在“super.init”调用之前在方法调用“foo”中使用“self”
- javascript - Javascript迭代字符串数组并为每个字符串添加输入/删除效果,一个接一个地完成
- css - 有没有办法自定义 ngx-datatable angular2 中单个单元格的颜色?
- javascript - 将多个数组合并到一个数组中
- testing - 如何使用 Postman Runner 多次测试同一个端点
- docker - 如何在本地为 Circle CI 映像模拟远程 Docker?
- mysql - 在表中使用 MySQL SUM 函数填充列
- python - 如何在 Visual Studio 2017 中为 python 解释器指定 -O 标志或以其他方式设置 __debug__?
- ios - 编译目标 C++ 文件时找不到“CrashlyticsDelegate”的协议声明
- sockets - 防止 TcpServer 中的洪水