指数反応ネイティブ アプリで 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 関数がそれを行う場所です。