为了账号安全,请及时绑定邮箱和手机立即绑定

在使用ES6类时,“超级()”和“超级(道具)”有什么区别?

在使用ES6类时,“超级()”和“超级(道具)”有什么区别?

慕田峪4524236 2019-07-05 18:37:07
在使用ES6类时,“超级()”和“超级(道具)”有什么区别?什么时候通过?props到super()为什么?class MyComponent extends React.Component {   constructor(props) {     super(); // or super(props) ?   }}
查看完整描述

3 回答

?
慕码人8056858

TA贡献1803条经验 获得超6个赞

当一个人需要通过时,只有一个原因。propssuper():

当你想要访问this.props在构造函数中。

经过:

class MyComponent extends React.Component {    
    constructor(props) {
        super(props)

        console.log(this.props)
        // -> { icon: 'home', … }
    }}

未通过:

class MyComponent extends React.Component {    
    constructor(props) {
        super()

        console.log(this.props)
        // -> undefined

        // Props parameter is still available
        console.log(props)
        // -> { icon: 'home', … }
    }

    render() {
        // No difference outside constructor
        console.log(this.props)
        // -> { icon: 'home', … }
    }}

请注意,经过或不通过propssuper无效关于以后使用this.propsconstructor..那是rendershouldComponentUpdate,或事件处理程序能接触到它。

这在索菲·阿尔伯特的书中有明确的说法回答一个类似的问题。


文件-状态和生命周期,将本地状态添加到类中,点2-建议:

类组件应该始终使用props.

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


查看完整回答
反对 回复 2019-07-05
  • 3 回答
  • 0 关注
  • 549 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信