0

假设我有这部分代码:

export default graphql(MyQuery, {
  options: (props) => ({
    variables: {
      var1: props.var1,
      var2: props.var2,
      var3: props.var3
      /* I want to do this: 
         if (props.var4 == "Donot query") /* Cancel this query; */
      */
    }
  })
})(DumbComponent)

是否有可能做到这一点?原因是我的 props 是由 Redux store 注入的。某些查询需要对 var1 和 var2 进行组合更改,例如获取正确的数据。但是,有时某些操作只会更改 Redux 中的 var1,这会触发 graphql 查询并产生不正确的数据。对于这些情况,我想取消查询。

我知道这个问题可以通过设计来解决。这意味着我们可以在 Redux 中单独创建查询所需的一组变量,任何动作触及这个集合,都需要触及集合中的个体。

但是,这样做需要 Redux 了解特定的 graphql 查询,从而形成紧密耦合。

4

2 回答 2

0

根据“取消查询”的含义,您可能可以使用以下skip选项:

export default graphql(MyQuery, {
  skip: (props) => !! props.var4,
  options: (props) => ({
    variables: {
      var1: props.var1,
      var2: props.var2,
      var3: props.var3
    }
  })
})(DumbComponent)

请参阅此处的文档:http: //dev.apollodata.com/react/api-graphql.html#graphql-config-skip

于 2017-04-21T04:03:50.497 回答
0

你可以参考这个StackOverflow 答案

我制作了一个 POC 来阐明 -如何取消 Apollo GraphQL 挂起的请求。修改源代码以满足您的要求。

快乐编码!

于 2020-09-14T20:49:55.630 回答