2017-09-25 89 views
0

I'getting在构造函数中未定义此错误。 让我知道这是什么原因。我从源文件中读取,编译器会自动创建构造函数并可用此引用,或者需要使用super()作为第一个语句手动添加构造函数。ReactJS构造函数'this'未定义错误

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

回答

3

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

发送超级道具不是强制性的。如果你不想使用this.props,那么你可以简单地调用super()。

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

子类必须在构造函数中具有超级用于初始化目的。如果没有super(),就不能访问'this'。

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