Конструктор дочернего класса не может использовать ссылку 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 отличается только внутри конструктора. Это было бы то же самое вне конструктора.