使用 react-apollo 重新获取查询:为什么 `loading` 不正确?

refetching a query with react-apollo: why is `loading` not true?

我正在尝试使用 Apollo 并使用以下相关代码:

const withQuery = graphql(gql`
query ApolloQuery {
  apolloQuery {
    data
  }
}
`);

export default withQuery(props => {
  const {
    data: { refetch, loading, apolloQuery },
  } = props;

  return (
        <p>
          <Button
            variant="contained"
            color="primary"
            onClick={async () => { await refetch(); }}
          >
            Refresh
          </Button>
          {loading ? 'Loading...' : apolloQuery.data}
        </p>
  );
});

服务器在发送以 { data: `Hello ${new Date()}` } 作为负载的响应之前延迟 500 毫秒。当我单击按钮时,我希望看到 Loading...,但组件仍然显示 Hello [date] 并在半秒后重新呈现。

根据thisnetworkStatus 应为 4 (refetch),因此 loading 应为真。我的期望错了吗?或者 React Apollo 文档中没有提到关于缓存的事情?

我使用的项目模板使用SSR,所以初始查询发生在服务器上;只有重新获取发生在浏览器中 - 如果这会有所作为的话。

我认为您需要在查询选项中指定 notifyOnNetworkStatusChange: true(默认为 false)。