仅手动中继现代运行 RefetchContainer

Posted

技术标签:

【中文标题】仅手动中继现代运行 RefetchContainer【英文标题】:relay modern run RefetchContainer only manually 【发布时间】:2018-05-10 20:19:14 【问题描述】:

我仍然没有太多使用现代继电器的经验,并且正在尝试实施搜索。

为此,我使用“RefetchContainer”:

export default createRefetchContainer(
    SearchComponent,
    
    base: graphql`
      fragment SearchComponent_base on Base
      @argumentDefinitions(
        input: type: "FireSearchInput!" defaultValue: page: 0,queryString:""
        )
                            
                    search(input: $input)
                    total
                    ...SearchResult_searchResult
                    
            
      `
    ,
    graphql`
    query SearchComponentRefetchQuery($input: FireSearchInput!)         
        ...SearchComponent_base @arguments(input: $input)
     
    `
)

问题只是当你启动应用程序时查询已经执行,没有输入。

是否可以禁止自动查询并仅使用命令this.props.relay.refetch 执行?

【问题讨论】:

【参考方案1】:

解决方案是简单地使用QueryRenderer

<QueryRenderer
  environment=environment
  query=graphql`
    query SearchComponent($input: FireSearchInput!) 
        search(input: $input)
             total
             ...SearchResult_searchResult
           
    
  `
  variables=
    input: ///my input
  

【讨论】:

以上是关于仅手动中继现代运行 RefetchContainer的主要内容,如果未能解决你的问题,请参考以下文章

中继现代嵌套分页

中继 createFragmentContainer 的现代目的

在 QueryRenderer 中传递中继现代变量

中继现代碎片容器,道具不自动可用

中继现代片段错误(期望对象包含数据....)

javascript 批量请求查询中继现代实现