美文网首页
React创建组件时constructor( )、super(

React创建组件时constructor( )、super(

作者: 小龙虾Julian | 来源:发表于2018-08-16 09:55 被阅读0次
1、constructor( )——构造方法

是ES6对类的默认方法,通过 new 命令生成对象实例时自动调用该方法。并且,该方法是类中必须有的,如果没有显示定义,则会默认添加空的constructor( )方法。

2、super( ) ——继承

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

3、ES5和ES6在实现继承上的不同之处:就是在ES5的继承中,先创建子类的实例对象this,然后再将父类的方法添加到this上( Parent.apply(this) )。而ES6采用的是先创建父类的实例this(故要先调用 super( )方法),完后再用子类的构造函数修改this。
4、ES6创建组件之后绑定this的三种方法:

(1)在构造函数中完成绑定,如下:

constructor(props) {
       super(props);
       this.handleClick = this.handleClick.bind(this); //构造函数中绑定
}

(2)在调用时绑定,如下:

<div onClick={this.handleClick.bind(this)}></div> //使用bind来绑定

(3)使用箭头函数绑定,如下:

<div onClick={()=>this.handleClick()}></div> //使用arrow function来绑定

相关文章

网友评论

      本文标题:React创建组件时constructor( )、super(

      本文链接:https://www.haomeiwen.com/subject/ovrnbftx.html