为什么你需要在下面的例子中使用super?它实际上从React.Component获取它需要对道具做什么?如果您已经从React.Component扩展了CommentList,那么为什么超级必要 - 不会将传递给构造函数的道具作用,就好像它被传递给React.Component一样? / p>
class CommentList extends React.Component {
constructor(props) {
super(props);
this.state = { comments: [] }
} ...
}
答案 0 :(得分:1)
这是一个关于继承的面向对象编程(OOP)概念。
类可以从父类继承方法和属性(在您的情况下,CommentList继承自React.Component [因此关键字extends])
但是,当您为新类命名一个名称相同的方法时,父类的方法会被覆盖。
这个想法也适用于构造函数(它们是在实例化时运行的方法)。
根据OOP的性质,当你在CommentList上声明构造函数时,你覆盖了React.Component的构造函数方法。
因此,你需要调用super()以确保父的构造函数也使用props。 (因此超级(道具))。
答案 1 :(得分:0)
class CommentList extends React.Component {
constructor(props) {
console.log(this) // Error
}
}
在调用this
之后才会初始化 super()