constructor() -- 构造方法
这是 es6 对类的默认方法,通过new命令生产对象实例时自动调用改方法,并且改方法是类中必须有的,如果没有显示定义 ,会默认添加空的 constructor()方法
super() --继承
在class方法中,继承是使用extends关键字来实现的,子类必须在 constructor()调用super()方法,否则新建实例时会报错
报错的原因在:子类是没有自己的this对象的,它只能继承来自父类的this 对象,然后对其进行加工,而super()就是将父类中的this对象继承给子类的 没有super,子类就得不到this 对象
super(props), super() 以及不写super 的区别
如果使用到了constructor 就必须写super(),用来初始化this
如果在constructor中要使用this.props,就必须给super加参数,super(props) (ps:无论有没有constructor,在render中this.props都是可以使用的,这是React自动附带的)
如果没用到constructor,是可以不写的;React会默认添加一个空的constructor。