В React компонентах класса вызов super(props) в конструкторе инициализирует родительский класс и даёт доступ к this.props прямо в самом конструкторе.
Ты не можешь использовать ссылку this в конструкторе дочернего класса, пока не вызовешь super(). Это требование наследования классов в ES6 и применяется ко всем подклассам React компонентов.
class MyComponent extends React.Component {
constructor(props) {
super(props);
console.log(this.props); // { name: 'John', age: 42 }
}
}
class MyComponent extends React.Component {
constructor(props) {
super();
console.log(this.props); // undefined
console.log(props); // { name: 'John', age: 42 }
}
}
Единственная разница между передачей и не передачей props проявляется только внутри конструктора:
super(props): this.props сразу доступенsuper(props): this.props равен undefined, но параметр props всё ещё доступенВне конструктора нет никакой практической разницы — this.props работает одинаково в обоих случаях. Но правильный подход — передавать props в super() для единообразия и чтобы избежать возможных багов, если тебе нужно обращаться к this.props во время инициализации конструктора.
В конструкторе React-компонента класса вызов super(props) позволяет получить доступ к this.props внутри конструктора, тогда как вызов super() без аргументов делает this.props undefined внутри конструктора.
Новый — ещё не проверен сообществом
Вы