仅手动中继现代 运行 RefetchContainer

relay modern run RefetchContainer only manually

我对现代中继还没有太多经验,正在尝试实施搜索。

为此我使用 "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执行?

解决方案是简单地使用 QueryRenderer:

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