为什么我们不在 React 的渲染方法前面使用 super



我是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特定部分的附加文档。

最新更新