代码之家  ›  专栏  ›  技术社区  ›  RHauck

仅手动中继modern run RefetchContainer

  •  1
  • RHauck  · 技术社区  · 7 年前

    我对relay modern仍然没有太多经验,正在尝试进行搜索。

    为此,我使用“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 回复  |  直到 7 年前
        1
  •  1
  •   RHauck    7 年前

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

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