当前位置: 首页 > 知识库问答 >
问题:

如何动态控制react Apollo客户端查询初始化?

夏侯英纵
2023-03-14

我的用途是case是一个map组件。我只希望当用户按下按钮时加载标记的数据,但不是在初始组件安装或位置改变时。

下面的代码示例:

// 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);

共有1个答案

谭敏学
2023-03-14

要包含基于受道具更改影响的条件的HoC,可以从recompose中使用branch

branch(
  test: (props: Object) => boolean,
  left: HigherOrderComponent,
  right: ?HigherOrderComponent
): HigherOrderComponent

查看:https://github.com/acdlite/recompose/blob/master/docs/api.md#branch

对于这个特定的示例,将类似于:

const enhance = compose(
  branch(

    // evaluate condition

    ({ targetResource, searchIsAllowedForMapArea }) =>
      Boolean(!searchIsAllowedForMapArea || targetResource != 'ROUTE'),

    // HoC if condition is true

    graphql(RoutesWithinQuery, {
      options: ({ displayedMapRegion }) => ({
        variables: {
          scope: 'WITHIN',
          targetRegion: mapRegionToGeoRegionInputType(displayedMapRegion)
        },
      }),
      props: ({ ownProps, data: { loading, viewer, refetch } }) => ({
        routes: viewer && viewer.routes ? viewer.routes : [],
        refetch,
        loading
      })
    })
  )
);

Explore = enhance(Explore);
 类似资料:
  • 问题内容: 该站点仅包含JSON文档,而没有Java客户端。我应该执行某种映射吗? 例如地理位置查询:http : //www.elasticsearch.org/guide/reference/query- dsl/geo-distance-range- filter.html 如何使用Java客户端编写这样的查询? 谢谢杰森 问题答案: 不明显但不那么复杂;)

  • 我正在尝试新的谷歌游戏服务。 起初我按照这个方法https://developers.google.com/games/services/android/quickstart然后完成了这个https://developers.google.com/games/services/android/init 我的结局是这样的: 我试着一步一步地遵循教程。我不明白出了什么问题。 ava.lang.Ille

  • 我创建了一个由Apollo客户端和graphQL驱动的react应用程序 定义了我的架构,因此预期结果是一个对象数组(<代码>[{名称:“metric 1”,类型:“type A”},{名称:“metric 2”,类型:“type B”})]) 在jsx文件中,我定义了以下查询: 我用Apollo HOC包装了组件,如下所示: Apollo客户端工作正常,并在渲染方法中返回道具的预期列表。 我想让

  • 我使用hbase客户端扫描从远程hbase服务器集群获取数据。当我将筛选器设置为扫描时,客户端将抛出一个异常: ipc:RemoteException:IPC服务器无法读取调用参数:无法初始化org.apache.hadoop.hbase.util.classes。

  • 10.2.1 动态参数客户端 需求: 编写两个节点,一个节点可以动态修改参数,另一个节点时时解析修改后的数据。 客户端实现流程: 新建并编辑 .cfg 文件; 编辑CMakeLists.txt; 编译。 1.新建功能包 新建功能包,添加依赖:roscpp rospy std_msgs dynamic_reconfigure。 2.添加.cfg文件 新建 cfg 文件夹,添加 xxx.cfg 文件(

  • 查询返回此错误。 Elasticsearch\Common\Exceptions\BadRequest est400Exception:{"error":{"root_cause":[{"type":"parsing_exception","原因":"未知查询[查询]","line": 1,"coll": 62}],"type":"x_content_parse_exception","原因":"