使用 react-apollo 重新获取查询:为什么 `loading` 不是真的?

Sil*_*eak 2 apollo reactjs graphql react-apollo apollo-client

我正在尝试 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>
  );
});
Run Code Online (Sandbox Code Playgroud)

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

根据,在networkStatus应该是4( refetch),并且因此loading应该是真实的。我的期望错了吗?或者 React Apollo 文档中没有提到有关缓存的内容?

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

And*_*ddu 12

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