Конструктор дочернего класса не может использовать ссылку this до тех пор, пока не будет вызван метод super(). То же самое относится и к подклассам ES6. Основная причина передачи параметра props вызову super() заключается в доступе к this.props в ваших дочерних конструкторах.

Пропуская props:

class MyComponent extends React.Component {
  constructor(props) {
    super(props)
 
    console.log(this.props) // prints { name: 'John', age: 42 }
  }
}

Не пропуская props:

class MyComponent extends React.Component {
  constructor(props) {
    super()
 
    console.log(this.props) // prints undefined
 
    // но параметр props по-прежнему доступен
    console.log(props) // prints { name: 'John', age: 42 }
  }
 
  render() {
    // никакой разницы вне конструктора
    console.log(this.props) // prints { name: 'John', age: 42 }
  }
}

Приведенные выше фрагменты кода показывают, что this.props отличается только внутри конструктора. Это было бы то же самое вне конструктора.


Назад