我们为什么不在React

时间:2019-10-26 08:13:23

标签: reactjs

我是React的新手,正在学习组件。让我感到困惑的是,为什么我们从React.Component继承后不在渲染方法前使用super。这是示例:

class Button extends React.Component {
  super.render() {
    return <div style={{ color: this.props.color }}>{this.props.children}</div>;
  }
}

3 个答案:

答案 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 codeReact.Component类仅在setState()forceUpdate()周围提供了一些标准化的行为。

答案 1 :(得分:0)

嗯,render不是方法调用。这是一个类内的声明。因此,它不能具有任何类型的点符号。您无法选择应在其上调用的实例,因为您没有在调用它,而是在声明它。

super通常用于从内部方法主体中调用父类的方法实现。

答案 2 :(得分:0)

请记住,React.Component是内部React类,而super是允许您调用父方法的方法。

您很可能永远不想调用任何特定的React.Component方法,因为(至少据我所知)它们都不是用于显式使用的。

因此,当您需要在扩展super的类中调用React.Component时,几乎唯一的情况是您想在组件中包含constructor。在这种情况下,您需要调用super(props)才能将道具传递给父级的类构造函数。

如果您没有自定义的constructor函数,则默认情况下将使用父(React.Componentconstructor

Here's有关React特定部分的其他文档。