2017-09-25 23 views
0

コンストラクタでこのエラーが未定義です。 これの背後にある理由は何かを教えてください。ソースからコンパイラが自動的にコンストラクタを作成し、この参照を使用できるようにするか、最初の文としてsuper()を使用してコンストラクタを手動で追加する必要があります。ReactJSコンストラクタ 'this'未定義エラー

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

答えて

3

スーパー()が呼び出されない場合は、このが初期化されていないので、スーパー()がある前に、これは許されない理由。しかし、これを使用していなくても、ES6クラスのコンストラクタはサブクラスであればsuperを呼び出さなければならないので、コンストラクタ内でsuper()が必要です。したがって、コンストラクタを持っている限り、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: ''} 
     } 
} 
関連する問題