javascript - 映射对象抛出错误 "TypeError: Cannot read property ' 状态'未定义”

标签 javascript reactjs

我有一个基本的映射函数,它只是从数据库中进行基本的获取。我想做的就是获取后将其全部显示到屏幕上。

这是我收到的错误

×
TypeError: Cannot read property 'state' of undefined
(anonymous function)
C:/Users/Henry Peters/Codestone%20Workstation%20Self-Assessment%20Portal%202/src/Components/PageDetails/CompletedAssessments/CompletedAssessments.js:211
  208 |       return (
  209 |         <div >
  210 |             
> 211 | <li> {this.state.selectedSet.RUId}</li>
      | ^  212 | <li> <b>{this.state.selectedSet.QuestionId}</b></li> 
  213 | 
  214 |         </div>

这是我的类(class)


class Questions extends React.Component {
  constructor(props) {
    super(props);
    console.log(props);
    this.state = { ...props,  };
    this.checker = this.checker.bind(this)
}

checker( ){
    this.setState({viewDetails : true})
    let workStation = window.localStorage.getItem("Workstation")
    let date = this.state.questions.Date
    let email = window.localStorage.getItem("User")

    fetch(`/show-questions-answered/${date}/${workStation}/${email}`)
    .then(recordset => recordset.json())
    .then(results => {
      this.setState({ selectedSet: results.recordset });
      console.log(this.state.selectedSet)   
    });
  alert(`${date} this is the boolena ${this.state.viewDetails}`)
}

  render() {
     console.log(`${this.state.previousDate} PREVIOUS DATE ${this.state.questions.Date}  DATE`)  

      if (!this.state.viewDetails){
      return (
          <div  >
          <button onClick = {this.checker}className= "btn btn-primary" style = {{float : "right"}}>View Details</button>

          <br />

          <li>  {this.state.questions.Date }</li>

        </div>
      );}
      else{
        return(<div  >
          <button onClick = {this.checker}className= "btn btn-primary" style = {{float : "right"}}>View Details</button>

          <br />

          <li>  {this.state.questions.Date }</li>
          <h3>BUTTON ClIcKED</h3>


          {this.state.selectedSet &&
              this.state.selectedSet.map(function( index) { 
                return (
                  <div >

          <li> {this.state.selectedSet.RUId}</li>
          <li> <b>{this.state.selectedSet.QuestionId}</b></li> 

                  </div>
                );
              })} 

        </div>

        )
      }

}}

console.log(this.state.selectedSet)  

确实有效并提供信息和包含的数据库表名称,例如 RUId、questionId 等

所以 this.state.selectedSet.QuestionId 应该可以工作

最佳答案

更改此代码:

{this.state.selectedSet &&
    this.state.selectedSet.map(function(index) {
        return (
            <div>
               <li>{this.state.selectedSet.RUId}</li>
               <li><b>{this.state.selectedSet.QuestionId}</b></li>
            </div>
        );
    })
}

对此:

{this.state.selectedSet &&
    this.state.selectedSet.map((item, index) => {
        return (
            <div>
               <li>{item.RUId}</li>
               <li><b>{item.QuestionId}</b></li>
            </div>
         );
    })
}

关于javascript - 映射对象抛出错误 "TypeError: Cannot read property ' 状态'未定义”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60190428/

相关文章:

javascript - 在 Modern React 中沿组件层次结构传递数据

javascript - 逐类导入还是整个模块导入,哪个最好?

javascript - OpenLayers 3右键单击事件

javascript - 忘记使用良好的域模型进行服务器端表单验证?

javascript - 我如何构造/访问我的非 node.js 应用程序的 react 组件?

javascript - 在 reactjs 组件中预加载数据

javascript - jQuery load(),然后对加载的内容使用 hide()

javascript - 如何从带参数的指令调用 Angular Controller 作用域函数?

javascript - 如何防止我的功能组件使用 React memo 或 React hooks 重新渲染?

javascript - 如何在 React 应用程序中存储 OAuth2 访问 token ?