我是React的新手,正在学习组件。让我困惑的是,在继承了React.Component之后,为什么我们不在渲染前使用super方法
class Button extends React.Component {
super.render() {
return <div style={{ color: this.props.color }}>{this.props.children}</div>;
}
}
这样声明super.render()
是无效语法。我想你的意思是:
class Button extends React.Component {
render() {
return <div style={{ color: this.props.color }}>{this.props.children}</div>;
}
}
如果是这样的话,那是因为React.Component在超类中没有提供呈现方法。从源代码中可以看出,React.Component
类只提供了setState()
和forceUpdate()
的一些标准化行为。
好吧,render
不是一个方法调用。这是一个类内部的声明。因此,它不能有任何类型的点表示法。您不能选择应该调用它的实例,因为您不是在调用它,而是在声明它
super
通常用于从方法体内部调用父类的方法实现。
React.Component
是一个内部React类,而super
是一个允许调用父方法的方法。
您很可能永远不想调用任何特定的React.Component
方法,因为(至少据我所知(它们都不是用于显式使用的。
因此,当您需要在扩展React.Component
的类中调用super
时,几乎唯一的情况是您希望在组件中有一个constructor
。在这种情况下,您需要调用super(props)
,以便将props传递给父级的类构造函数。
如果您没有自定义constructor
函数,则默认情况下将使用父级(React.Component
(constructor
。
以下是React特定部分的附加文档。