什么时候将道具
传递给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)
//->;{图标:’主页’,…}
}
}
请注意,传递或不传递props
到super
对以后使用这个.props
到构造函数之外的
没有影响。也就是说,
呈现
,应该组件更新
,或者事件处理程序总是可以访问它
索菲·阿尔伯特(Sophie Alpert)在回答一个类似问题时明确表示了这一点
文档状态和生命周期,向类添加本地状态,第2点-建议:
类组件应始终使用
props
调用基构造函数
但是,没有提供任何理由。我们可以推测这要么是因为子类化,要么是为了将来的兼容性
(感谢@MattBrowne的链接)