1

componentWillReceiveProps是否可以在使用 react-apollo HOC 时以某种方式禁用查询的执行graphql?为了说明我正在尝试做的事情。

我有一条路线/:albumSlug/photos/:photoId,它将根据 url 打开带有相册中照片的照片详细信息页面。此页面还将使用 photoId 获取此照片前后的 10 张照片。现在,当用户导航到下一张照片时,我将检查是否预加载了超过 5 张照片,如果是,我将跳过此查询,如果现在我将对fetchMore照片执行查询并将数据合并在一起。

问题是,如果我使用 graphql HOC,它将为每个componentWillReceiveProps. 是否有可能以某种方式禁用它?或者任何其他解决方案?

我出来的唯一解决方案是将使用 graphql 返回的组件包装到简单组件,它将处理此跳过状态并skip在查询选项中使用选项,但不知何故我真的不喜欢这个解决方案。

更新:嗯,这只是想法,但查询看起来像这样:

album(id: $albumId) {
  current:photoById(id: $photoId) {
    ...photo
  }
  previous: photos(before: $photoId, limit: 10) {
    ...photo
  }
  next: photos(after: $photoId, limit: 10) {
    ...photo
  }
}

然后我使用这样的道具映射:

photos: [...album.previous, album.current, ...album.next]

将其转换为我可以在其中找到照片的数组。我也用它来渲染导航,我的想法是使用fetchMore函数并将其合并到这个页面。不知道会不会好用,我正在尝试。

4

1 回答 1

0

使用 Apollo 1.0 RC,您可以使用 FetchPolicy。

于 2017-03-18T08:19:18.250 回答