React-apollo:在轮询查询中无需重新获取即可更改变量

Mik*_*dis 7 javascript reactjs graphql react-apollo apollo-client

有没有办法让我们可以在不重新获取的情况下更改查询中的变量?

我的用例是当您有一个轮询查询并且您想根据用户的操作跳过或包含查询的一部分时。

例如


const USER_STATS = gql`
  query userStats($withDetailedStats:Boolean!) {
    user {
      stats {
        ...stats
      }
      detailedStats@include(if:$withDetailedStats) {
        ...detailedStats
      }
    }
  }
`;

class Example extends React.PureComponent {
  render() {
    return (
      <Query
        query={query} 
        variables={{ withDetailedStats: false }} 
        pollInterval={5000}
      >
        {
          ({ data, refetch, loading }) => {
            if (loading) { return 'Loading...'; }
            const { user } = data;
            return (
              <div>
                <div>{user && user.stats}</div>
                <Button onClick={this.openModal}>More Details</Button>
                <Modal
                  onOpen={() => { refetch({ withDetailedStats: true }); }} 
                  onClose={() => { setVariablesWithoutRefetching({ withDetailedStats: false }); }}
                >
                  <div>{user && user.detailedStats}</div>
                </Modal>
              </div>
            );
          }
        }
      </Query>
    );
  }
}


Run Code Online (Sandbox Code Playgroud)