是否可以取消config.options中的graphql查询?

时间:2017-04-21 03:33:31

标签: redux graphql apollo react-apollo

我们说我有这部分代码:



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)




有可能这样做吗? 原因是我的道具是由Redux商店注入的。某些查询需要对var1&和/或var2例如用于获取正确的数据。但是,有时某些操作只会更改Redux中的var1,这将触发graphql查询并产生不正确的数据。对于这些情况,我想取消查询。

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

但是,这样做需要Redux知道特定的graphql查询,从而产生紧密耦合。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您可以参考此StackOverflow answer

我已经说明了一个POC-如何取消Apollo GraphQL待处理请求。修改源代码以符合您的要求。

快乐编码!