我是React的新手,正在学习组件。让我感到困惑的是,为什么我们从React.Component继承后不在渲染方法前使用super。这是示例:
class Button extends React.Component {
super.render() {
return <div style={{ color: this.props.color }}>{this.props.children}</div>;
}
}
答案 0 :(得分:1)
那么,super.render()
这样声明时是无效的语法。我想你的意思是:
class Button extends React.Component {
render() {
return <div style={{ color: this.props.color }}>{this.props.children}</div>;
}
}
?
如果是这种情况,那是因为React.Component在超类中没有提供render方法。您可以看到from the source code,React.Component
类仅在setState()
和forceUpdate()
周围提供了一些标准化的行为。
答案 1 :(得分:0)
嗯,render
不是方法调用。这是一个类内的声明。因此,它不能具有任何类型的点符号。您无法选择应在其上调用的实例,因为您没有在调用它,而是在声明它。
super
通常用于从内部方法主体中调用父类的方法实现。
答案 2 :(得分:0)
请记住,React.Component
是内部React类,而super
是允许您调用父方法的方法。
您很可能永远不想调用任何特定的React.Component
方法,因为(至少据我所知)它们都不是用于显式使用的。
因此,当您需要在扩展super
的类中调用React.Component
时,几乎唯一的情况是您想在组件中包含constructor
。在这种情况下,您需要调用super(props)
才能将道具传递给父级的类构造函数。
如果您没有自定义的constructor
函数,则默认情况下将使用父(React.Component
)constructor
。
Here's有关React特定部分的其他文档。