apollo-clientクエリでラップされた react コンポーネントは、サーバーへのデータ呼び出しを自動的に開始します。
特定のユーザー入力に対してのみデータのリクエストを開始したいと考えています。
クエリ オプションでスキップ オプションを渡すことができますが、これは refetch() 関数がコンポーネントの小道具として提供されていないことを意味します。また、小道具の更新時にスキップの値が動的に評価されないようです。
私の用途は、マップ コンポーネントです。ユーザーがボタンを押したときにのみマーカーのデータをロードしたいのですが、最初のコンポーネントのマウントや場所の変更ではロードしません。
以下のコードサンプル:
// GraphQL wrapping
Explore = graphql(RoutesWithinQuery, {
options: ({ displayedMapRegion }) => ({
variables: {
scope: 'WITHIN',
targetRegion: mapRegionToGeoRegionInputType(displayedMapRegion)
},
skip: ({ targetResource, searchIsAllowedForMapArea }) => {
const skip = Boolean(!searchIsAllowedForMapArea || targetResource != 'ROUTE');
return skip;
},
}),
props: ({ ownProps, data: { loading, viewer, refetch }}) => ({
routes: viewer && viewer.routes ? viewer.routes : [],
refetch,
loading
})
})(Explore);