ApolloQueryResult 是可变的吗?

Is ApolloQueryResult mutable?

ApolloQueryResult 输入 apollo-client 定义为

type ApolloQueryResult<T> = {
  data: T;
  errors?: ReadonlyArray<GraphQLError>;
  loading: boolean;
  networkStatus: NetworkStatus;
  stale: boolean;
};

query方法带有以下签名

query<T,TVariables>(options: QueryOptions<TVariables>): Promise<ApolloQueryResult<T>>;

因此我们得到一个 Promise 里面有 ApolloQueryResult

所以要么 ApolloQueryResult 是可变的,要么 loadingstale 属性没有意义(总是错误的)。

这是怎么回事?

ApolloQueryResult 是不可变的。通常,如果您使用 query 方法,则不会查看 loadingstale 属性。这些属性之所以存在,是因为正在从 Observable 查询中重用该类型。