简述super()和super(props)有什么区别?

super()super(props) 都是在构造函数中调用父类(在 React 中通常是 React.Component)的构造函数。但是它们之间有一些重要的区别:

  1. super() 调用会创建一个父类的实例,但是它不会将父类的 props 属性初始化。这意味着,在构造函数中,你不能通过 this.props 来访问到 props。然而,你仍然可以在其他方法(如 render)中通过 this.props 访问到 props。

  2. super(props) 不仅会创建一个父类的实例,还会初始化父类的 props 属性。这意味着,你可以在构造函数中通过 this.props 访问到 props。

举个例子:

class MyComponent extends React.Component {
  constructor(props) {
    super(); // 或者 super(props)
    console.log(this.props); // 如果使用 super(),这里会打印 undefined。如果使用 super(props),这里会打印出 props 的值。
  }

  render() {
    console.log(this.props); // 无论使用 super() 还是 super(props),这里都会打印出 props 的值。
    // ...
  }
}

在大多数情况下,我们会推荐使用 super(props),因为它可以让你在构造函数中通过 this.props 访问到 props,这可以使得代码更清晰和易于理解。

发表评论

后才能评论