ReactJS/Javascript/Graphql/React-apollo:无法读取未定义的属性“正在加载”

Posted

技术标签:

【中文标题】ReactJS/Javascript/Graphql/React-apollo:无法读取未定义的属性“正在加载”【英文标题】:ReactJS/Javascript/Graphql/React-apollo: Cannot read property 'loading' of undefined 【发布时间】:2019-01-25 15:35:10 【问题描述】:

我正在从渲染函数调用 displayElements 并收到此错误:TypeError: Cannot read property 'loading' of undefined。为什么会出现这个错误?我认为出现此错误的原因是因为这里在初始渲染时没有结果。但是,当单击提交按钮时,对数据库的查询被执行,我想使用 displayElements 显示结果。

displayElements()
        var data = this.props.getObjectsQuery;
        console.log(this.props);
        if(data.loading)
          return <option disabled>Loading...</option>;
        else
          return data.action.map(action => 
            return(<option key=action.action value=action.timestamp>action.filename</option>);

          )
        
      

提交按钮

handleSubmit = event => 
        event.preventDefault();

        console.log(this.state);
        this.setState(
          startTime: new Date(document.getElementById("startTime").value).valueOf(),//getElementById is a jQuery method
          endTime: new Date(document.getElementById("endTime").value).valueOf()
        , () => 
          this.props.data.refetch(//Assign the inputvalues, which is the current state, to the variables after pressing the submit button
            startTime: this.state.startTime,
            endTime:this.state.endTime
          );
          console.log(this.state.startTime);
          console.log(this.state.endTime);
        );
      ;

【问题讨论】:

【参考方案1】:

将条件写为if(data),然后编写您的代码。

  displayElements()
    var data = this.props.getObjectsQuery;
    console.log(this.props);
    if(data) 
      if(data.loading)
        return <option disabled>Loading...</option>;
      else
        return data.action.map(action => 
          return(<option key=action.action value=action.timestamp>action.filename</option>);
        )
      
    

  

【讨论】:

现在这样说:TypeError: Cannot read property 'action' of undefined 你如何将getObjectsQuery 传递给这个组件?? 从'../Queries'导入getObjectsQuery; 那么不要使用道具访问getObjectsQuery console.log(getObjectsQuery) 并检查它正在记录什么 初始加载时出现此错误:TypeError: Cannot read property 'action' of undefined.

以上是关于ReactJS/Javascript/Graphql/React-apollo:无法读取未定义的属性“正在加载”的主要内容,如果未能解决你的问题,请参考以下文章