【发布时间】:2017-03-10 20:34:48
【问题描述】:
使用apollo-client 查询包装的 React 组件将自动发起对服务器的数据调用。
我想仅针对特定用户输入触发数据请求。
You can pass the skip option in the query options - 但这意味着 refetch() 函数没有作为组件提供给组件;并且似乎在 prop 更新时不会动态评估 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);
【问题讨论】:
-
报告跳过仍然不适用于此用例。现在你可能不得不使用 Apollo 来手动获取自己。
标签: react-apollo