ReactJS构造函数'this'未定义错误

时间:2017-09-25 17:16:03

标签: javascript reactjs

我在构造函数中未定义此错误。 让我知道这背后的原因是什么。我从源代码中读取编译器自动创建构造函数并可用此引用或需要手动添加构造函数和super()作为第一个语句。

class A extends Component {
  constructor() {
    // this undefined error
    console.log('construtor');
    this.state = {name: ''}        
  }
}

2 个答案:

答案 0 :(得分:4)

在super()之前不允许这样做的原因是因为如果不调用super(),这是未初始化的。但是即使我们没有使用它,我们在构造函数中需要一个super(),因为如果它们是子类,ES6类构造函数必须调用super。因此,只要你有一个构造函数,就必须调用super()。 (但是子类不必有构造函数)。

在超级中发送道具不是强制性的。如果您不想使用this.props,那么您只需调用super()。

class A extends React.Component {   
    constructor(props) {
    super(props);
    console.log('construtor');
    this.state = {name: ''}           
    } 
}

答案 1 :(得分:2)

子类必须具有super in构造函数以用于初始化目的。如果没有super(),则不允许访问“this”。

class A extends React.Component {
      constructor(props) {
           super(props);
           console.log('construtor');
           this.state = { name: ''}
      }
}