使用 ApolloClient 执行 GraphQL 查询时如何正确处理加载和部分状态?

How to properly handle loading and partial states when executing a GraphQL query using ApolloClient?

我正在开发一个从 GraphQL 端点收集数据的后端应用程序,我正在使用 ApolloClient 这样做:

const client = new ApolloClient({
    uri: uri,
    link: new HttpLink({ uri: uri, fetch }),
    cache: new InMemoryCache({
        addTypename: false,
    }),
});

当我使用query函数时:

client.query({
    query: query,
    variables: vars,
    fetchPolicy: "no-cache",
})

它returns一个ApolloQueryResult对象:

ApolloQueryResult<T> = {
    data: T;
    errors?: ReadonlyArray<GraphQLError>;
    error?: ApolloError;
    loading: boolean;
    networkStatus: NetworkStatus;
    partial?: boolean;
}

我的问题是我已经检查了文档,但它没有说明我应该如何处理 loadingpartial 状态。我没有使用 React,我的印象是这些仅用于前端调用,但我想确定一下。

我测试了它,partialloading 对我来说总是 undefined,无论我调用哪个端点。

从节点处理这些问题的正确方法是什么?难道这些不是undefined

我自己也很好奇这个,所以看了下源码。

loading:[可以忽略] 您在 ApolloClient never sets result.loading to true. The front-end React useQuery hook 上调用的 query 方法确实如此,这是有道理的,因为它的工作是帮助 UI 呈现.

partial:[取决于] ApolloQueryResult typedef source 包含以下注释:“如果 result.data 从缓存中读取时缺少字段, result.partial 将是真实的...”。您的客户端配置为使用缓存,但查询具有 no-cache 策略。