graphql - Apollo 客户端片段不嵌入数据
问题描述
这是我第一次冒险进入碎片,我看不出我在哪里搞砸了,但它绝对行不通!在 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的“网络”选项卡中看到的那样,服务器返回了正确的数据,但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
字段
推荐阅读
- android - 如何制作动态线性布局以在 android 中显示 textview?
- linux-kernel - 次要页面错误究竟是如何被识别/解决的?
- c++ - 如果在员工等级层次结构中提升角色,将改变什么等级设计
- android - 如何使用列表适配器修改回收站视图中的列表?
- android - 无法使用 Log.* 从 android.util.Log 导入后
- postgresql - 如何找到我的 CI / CD 的数据库主机地址?
- c# - 多对多使用带有通用类的 EF Core 的 LinqKit
- php - PHP中的字符串函数
- javascript - 从函数返回的数组解构中的花括号
- sql - 创建动态列