Apollo 客户端片段未嵌入数据
Apollo client fragments not embedding data
这是我第一次冒险进入碎片,我看不出我在哪里搞砸了,但它肯定是行不通的!在 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}
`;
所以,服务器 returns 数据正确,正如我在 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
字段
这是我第一次冒险进入碎片,我看不出我在哪里搞砸了,但它肯定是行不通的!在 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}
`;
所以,服务器 returns 数据正确,正如我在 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
字段