2017-04-21 4 views
0

だが、私はこのコードの部分を持っているとしましょう:config.options内のgraphqlクエリをキャンセルすることはできますか?

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で個別に作成することができ、アクションがこのセットに触れると、セット内の個体に触れる必要があります。

ただし、これを行うには、特定のgraphqlクエリをReduxに認識させる必要があります。あなたは「クエリをキャンセル」によって何を意味するかに応じて、あなたがskipオプションを使用することができるかもしれません

答えて

0

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

+0

私はスキップしようとしなかった、それこの目的のために設計されていません。それはクエリ全体をスキップし、私の注射データを '小道具から取り除く'でしょう。古い注入データを小道具に残した​​いと思っています。さもなければ、コンポーネントはレンダリングされません。 –

+0

あなたができることの1つは、データを状態にコピーするか、変数が準備ができるまで変数を設定しないことです – stubailo

関連する問題