0

指数反応ネイティブ アプリで apollo クライアントを使用していますが、graphql オプション メソッドが 11 回実行されることに気付きました。なぜですか? それはエラーですか、それともパフォーマンスの問題ですか? それは正常ですか?クエリも11回実行していますか?

...

@graphql(getEventGql,{
  options: ({route}) => {
    console.log('why does this log 11 times', route.params);
    return {
      variables: {
        eventId: route.params.eventId,
      }
    }
  },
})
@graphql(joinEventGql)
@connect((state) => ({ user: state.user }))
export default class EventDetailScreen extends Component {
...

ドキュメントのサンプルを見るhttp://dev.apollodata.com/react/queries.html

通常、クエリに対する変数は、ラッパー コンポーネントの props によって構成されます。アプリケーションでコンポーネントが使用されている場合は常に、呼び出し元が引数を渡します。したがって、 options は、外側のコンポーネントの props を取る関数にすることができます (慣例により ownProps ):

// The caller could do something like:
<ProfileWithData avatarSize={300} />

// And our HOC could look like:
const ProfileWithData = graphql(CurrentUserForLayout, {
  options: ({ avatarSize }) => ({ variables: { avatarSize } }),
})(Profile);

デフォルトでは、graphql は、ownProps からのクエリから不足している変数を取得しようとします。したがって、上記の例では、より単純な ProfileWithData = graphql(CurrentUserForLayout)(Profile); を使用できます。ただし、変数の名前を変更する必要がある場合、または値を計算する必要がある場合 (または単に物事についてより明確にしたい場合) は、 options 関数がそれを行う場所です。

4

0 に答える 0