使用es6类时,React中的“super()”和“super(props)”有什么区别?

什么时候将道具传递给super()很重要,为什么

类MyComponent扩展了React.Component{
建造师(道具){
super();//还是super(道具)?
}
}

当需要将props传递给super()时,只有一个原因:

当您想要访问构造函数中的此.props时。

通过:

类MyComponent扩展了React.Component{
建造师(道具){
超级(道具)
console.log(this.props)
//->{图标:’主页’,…}
}
}

未通过:

类MyComponent扩展了React.Component{
建造师(道具){
超级()
console.log(this.props)
//->未定义
//道具参数仍然可用
控制台日志(道具)
//->{图标:’主页’,…}
}
render(){
//构造函数之外没有区别
console.log(this.props)
//->{图标:’主页’,…}
}
}

请注意,传递或不传递propssuper对以后使用这个.props构造函数之外的没有影响。也就是说,呈现应该组件更新,或者事件处理程序总是可以访问它

索菲·阿尔伯特(Sophie Alpert)在回答一个类似问题时明确表示了这一点


文档状态和生命周期,向类添加本地状态,第2点-建议:

类组件应始终使用props调用基构造函数

但是,没有提供任何理由。我们可以推测这要么是因为子类化,要么是为了将来的兼容性

(感谢@MattBrowne的链接)

发表评论