ReactJS/Apollo/Graphql:使用 @skip 阻止 data.refetch 直到单击 onSubmit 但重新获取仍然可用

Posted

技术标签:

【中文标题】ReactJS/Apollo/Graphql:使用 @skip 阻止 data.refetch 直到单击 onSubmit 但重新获取仍然可用【英文标题】:ReactJS/Apollo/Graphql: Block data.refetch w/ @skip until onSubmit is clicked but have refetch still available 【发布时间】:2019-04-05 03:42:15 【问题描述】:

经过一些调试,我发现当页面加载时,@skip 正在做我想做的事情,这阻止了页面加载时查询的执行。但是,当点击提交按钮时,应用会崩溃。

我不明白为什么开始和结束是未定义的?

variables: start: undefined, end: undefined, skipFi: true

如果我从关注应用程序中删除 skipF: true 可以正常工作:

export default graphql(getObjQ,  
    options: (props) => ( 
        variables:  
            start: props.start,
            end: props.end,
            skipF: true

         
    )         
)(Comp);

我正在尝试将 here 的概念应用到我的应用程序中:

 export default graphql(gql`
        query SearchQuery($query: String, $first: Int, $skip: Boolean!) 
            search(query: $query, first: $first) @skip(if: $skip) 
                edges 
                    ....
                
            
        
    `,   options: variables:  skip: true  )(Input);

handleSubmit 函数如下所示:

handleSubmit = event => 
        event.preventDefault();



        this.setState(
          errMsg: "",
          start: new Date(document.getElementById("start").value).valueOf(),
          end: new Date(document.getElementById("end").value).valueOf(),
          submit: true,




        , () => 
          this.props.data.refetch(
            start: this.state.start,
            end:this.state.end,


          );

查询如下所示,位于单独的文件/组件中:

    const Query =gql`
      query getObjQ($start: Float!, $end: Float!, $skipF: Boolean!

) 

  

    abs(start: $start,  end:$end) @skip(if: $skipF)

【问题讨论】:

【参考方案1】:

“移动部件”太多 - 先尝试硬编码值:

handleSubmit = event => 
  event.preventDefault();

  this.props.data.refetch(
    start: XXXXXXXXXXX,
    end: YYYYYYYYY,
    skipF: false
  );

更新:

调试方法options参数(返回对象):

export default graphql(getObjQ,  
  options: (props) => 
    console.log(props.start);
    return  
      variables:  
        start: props.start,
        end: props.end,
        skipF: true
       
    
  
)(Comp);

【讨论】:

仍在获取:variables: start: undefined, end: undefined, skipFi: true console.log 之后,options: (props) => ( 很好。所以看起来我传递skipF: true的语法错误。

以上是关于ReactJS/Apollo/Graphql:使用 @skip 阻止 data.refetch 直到单击 onSubmit 但重新获取仍然可用的主要内容,如果未能解决你的问题,请参考以下文章

测试使用

第一篇 用于测试使用

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?

今目标使用教程 今目标任务使用篇

Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)

MySQL db 在按日期排序时使用“使用位置;使用临时;使用文件排序”