2017-06-14 4 views
2

私はかなり大きなReactアプリケーションでApolloを広範囲に使用していますが、私は同じ制限に何度も直面しています。Reactコンポーネントマウント(queryDataとlifecycleなし)でのみApolloクエリを実行

コンポーネントのマウント時にのみクエリを実行したいので、このコンポーネントのサブルートを変更してもクエリは再実行されません。コンテナパターンを保持して、コンテナ内でクエリを宣言し、コンポーネントをラップして忘れてしまい、コンポーネント自体がアポロのものをきれいにするようにしたいのです。 これまで、コンポーネント、クエリ、およびオプションを取り、独自のApollo高次コンポーネントを作成し、componentDidMountでqueryDataを自動的に実行する新しいコンポーネントを返すことで、これを実現できました。 Here's the codeapolloQueryHOC(MyComponent, queryOptions);

しかし、私はページングの実装を開始しましたが、このアプローチは単に動作しません。私が実装した複雑なページングロジックではあまりにも醜いものになります。基本的なApolloコンテナのアプローチを使用すると、魅力的に機能します。しかし、それはすべてのルート/小道具の変更で実行されます。

私の質問は、withApolloなどを使用する以外は、マウント時にのみ「コンテナ」クエリを実行する方法があるかどうかです。

答えて

2

ああ、問題は実際にミドルウェアで認証を処理していたので、私のクエリはトークンとして持っていて、トークンはindexedDBからフェッチされ、ミドルウェアのクエリに追加されました。 Apolloストアに格納されたクエリ結果(適切なトークンをパラメータとして)は、クエリを "'とトークンとして照合することは決してありませんでした。その結果、Apolloはサーバーから何度も何度もクエリを実行します。

関連する問題