Apollo 客户端片段不嵌入数据
Posted
技术标签:
【中文标题】Apollo 客户端片段不嵌入数据【英文标题】:Apollo client fragments not embedding data 【发布时间】:2020-12-01 08:57:51 【问题描述】:这是我第一次冒险进入碎片,我看不出我在哪里搞砸了,但它绝对行不通!在 GraphiQL 中它运行良好:
query Tasks($taskIds: [String]!)
tasks(taskIds: $taskIds)
...taskDisplay
fragment taskDisplay on Task
_id
name
description
status
children
_id
这是我的客户端应用程序中的内容:
import gql from "@apollo/client";
export const TASK_FRAGMENT = gql`
fragment taskDisplay on Task
_id
name
description
status
children
_id
`;
export const TASKS = gql`
query Tasks($taskIds: [String]!)
tasks(taskIds: $taskIds)
...taskDisplay
$TASK_FRAGMENT
`;
因此,服务器返回正确的数据,正如我在 Chrome 的 Network 选项卡中看到的那样,但useQuery
结果接收到的数据是一个空对象。什么给了?
使用@apollo/client@3.2.0-beta.2
(我已降级到3.1.0,结果相同)
编辑:
添加更多信息。我的代码与使用钩子一样简单。以下是正在发生的事情:
import useQuery, gql from "@apollo/client";
import TASK_FRAGMENT from "../pages/task/queries";
const ROOT_TASK_QUERY = gql`
query Project($projectId: String!)
rootTask(projectId: $projectId)
...taskDisplay
$TASK_FRAGMENT
`;
const useProject = ( variables ) =>
return useQuery(ROOT_TASK_QUERY,
variables,
);
;
export default useProject;
这只是记录查询本身:
【问题讨论】:
您返回的数据缺少__typename
字段,这可能是原因吗?
天哪,太棒了。我在学习 Apollo 时关闭了它,因为我没有看到它对我正在做的事情有用。那正是它的样子。 const cache = new InMemoryCache( addTypename: false );
把它作为答案发布,我会标记它!
我很高兴,会做的
【参考方案1】:
您返回的数据缺少__typename
字段
【讨论】:
1.5 年后,你也解决了我的问题!非常感谢 也是 1.5 年后,你解决了我的问题!谢谢! 也可能是你在 Apollo 选项中设置了addTypename
为false
。以上是关于Apollo 客户端片段不嵌入数据的主要内容,如果未能解决你的问题,请参考以下文章
将 GraphQL 片段与 Apollo Hooks 一起使用时出错
@apollo/client 反应钩子 useQuery() 数据未定义