如何使用react-apollo禁用componentWillReceiveProps生命周期中的查询执行?

时间:2016-10-18 21:08:19

标签: reactjs graphql apollo

当使用react-apollo HOC componentWillReceiveProps时,是否有可能以某种方式禁用graphql中的查询执行?为了说明我正在尝试做什么。

我有路线/:albumSlug/photos/:photoId,会根据网址打开相册中的照片详细信息页面。此页面还将使用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函数并将其合并到此页面。不知道它是否会起作用我正在试验一下。

1 个答案:

答案 0 :(得分:0)

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