React中constructor及super

constructor( )

Reactconstructor表示父类的构造方法,用来新建父类的this对象,这是ES6对类的默认方法,该方法是类中必须有的,如果没有显示定义,则会默认添加空的constructor( )方法。

class Point {
}

// 相当于
class Point {
  constructor() {}
}
super( )

class方法中,继承使用 extends 关键字来实现。子类 必须 在 constructor( )调用 super( )方法,否则新建实例时会报错,因为子类没有自己的this对象,而是继承父类的this对象,然后对其进行加工,如果不调用super方法;子类就得不到this对象。
super时:


super时:

很明显自动就报错了,所以只要有constructor就必须有super

super or super(props)

先看个例子:

class Main extends React.Component {
    constructor() {
        super();
        this.state = {count: 1};
    }

    render() {
        return (
            <div>
                {this.state.count}
                <App count={this.state.count}/>
            </div>
        );
    }
}

class App extends React.Component {
    constructor() { //没有写props
        super();
    }

    render() {
        return (
            <div>
                {this.props.count}
            </div>
        );
    }
}

运行后显示正确,当在constructorsuper中写了props,也毫无影响,运行显示正确,那么将App组件中的constructor改为:

constructor() {
        super();
        this.state = {c: this.props.count};
}

显示部分改为:

<div>
       {this.state.c}
</div>

那么报错如下:


当把App组件中的constructor改为:

constructor(props) {
        super(props);
        this.state = {c: this.props.count};
    }

那么运行显示正确

所以说super()super(props)的区别就是你是否需要在构造函数内使用this.props,如果需要那么你就必须要写props,如果不需要,那么写不写效果是一样的

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Scala与Java的关系 Scala与Java的关系是非常紧密的!! 因为Scala是基于Java虚拟机,也就是...
    灯火gg阅读 3,535评论 1 24
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,839评论 18 399
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,730评论 0 11
  • 谢谢你鸟类!谢谢你娶了这样的我并娇宠一生! 谢谢你鸟类!谢谢你现在还想着我,我每天投射,只要看见猫,就代表你想我,...
    猫公主喵阅读 219评论 0 0
  • 人生中什么是最困难的?是整理,什么是最重要的呢,还是整理。 人的欲望和梦想很多,...
    爱之涯阅读 297评论 0 1