首页 > 解决方案 > 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;

这只是记录查询本身:

缺失数据

标签: graphqlapollo-client

解决方案


您返回的数据缺少该__typename字段


推荐阅读