使用apollo-client查询包装的 react 组件将自动发起对服务器的数据调用。
我想仅在特定用户输入上触发数据请求。
您可以在查询选项中传递跳过选项- 但这意味着 refetch() 函数不作为组件提供;并且似乎没有在道具更新时动态评估 skip 的值。
我的用例是地图组件。我只希望在用户按下按钮时加载标记的数据,而不是在初始组件安装或位置更改时加载。
下面的代码示例:
// 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);