Вопрос недостаточно конкретен относительно того, что означает , называемое супер , хотя это может означать две разные вещи.
super()
относится к вызову родительского конструктора. Это необходимо только в дочернем конструкторе. Это обязательно в дочернем конструкторе после его использования, это требуется спецификацией ES6:
class Parent extends Component {
constructor(props) {
// if no super() is called, it's invalid ES6 class
}
render() {...}
}
Но сам конструктор не является обязательным (так называемый неявный конструктор):
class Parent extends Component {
state = {};
// is a shortcut for:
/*
constructor(props) {
super(props);
this.state = {}
}
*/
render() {...};
}
super.method
ссылается на свойство method
в прототипе родительского класса. Его можно использовать в дочерних методах конструктора и прототипа. Его использование не является обязательным.
Дочерний класс может полностью переопределить метод без использования соответствующего super
метода:
class Parent extends Component {
render () { return 'foo'; }
}
class Child extends Parent {
render () { return 'bar'; }
}
Или расширить его функциональность:
class AnotherChild extends Parent {
render () { return <h1>{super.render()}</h1>; }
}