我啥时候需要使用 super(props) 将 prop 传递给 react 组件的构造函数? [复制]

Posted

技术标签:

【中文标题】我啥时候需要使用 super(props) 将 prop 传递给 react 组件的构造函数? [复制]【英文标题】:When do i need to pass prop to constructor of a react component using super(props)? [duplicate]我什么时候需要使用 super(props) 将 prop 传递给 react 组件的构造函数? [复制] 【发布时间】:2016-11-26 14:38:25 【问题描述】:

很多时候我们在构造函数中发送 props,但我们从不在构造函数的任何地方使用 this.props,所以为什么需要传递它以及何时需要传递。

 class App extends React.Component 

      constructor(props) 
        super(props);    // When do we need to send props to the constructor
        this.state = 
           data: 'Initial data...'
        
        this.updateState = this.updateState.bind(this);
      ;

      updateState(e) 
          this.setState(data: e.target.value);
      

      render() 
        return (
           <div>
             <input type = "text" value = this.state.data 
              onChange = this.updateState />
             <h4>this.state.data</h4>
          </div>
        );
      

   

【问题讨论】:

【参考方案1】:

React.Component 构造函数实际上不需要道具。您可以编写此代码,一切正常:

constructor() 
    super();
    this.state = 
       data: 'Initial data...'
    ;
    this.updateState = this.updateState.bind(this);
  ;

这是因为构造函数路径实际上并不是在标准 React 生命周期中分配道具的位置。 React.Component 实际上并不使用 props,只设置 this.props 以防您的构造函数需要使用它。但通常你不应该在你的构造函数中使用props,因为使用props to initialize your state is an anti-pattern

如果你已经配置了 babel,你甚至不需要构造函数来处理这样的事情:

class MyComponent extends React.Component 
    state =  data: "initial data" ;

    updateState = (arg1, arg2) =>  ... ;

    // instead of:
    // updateState(arg1, arg2)  ... 


【讨论】:

是用简单的 state = 表达式替换 constructor() 来设置初始状态,在使用 ES2015 时被认为是一种好习惯?

以上是关于我啥时候需要使用 super(props) 将 prop 传递给 react 组件的构造函数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

react中constructor和super的使用

我啥时候需要将异步函数的返回类型声明为未来对象?

我啥时候需要在 Heroku 中使用工作进程

我啥时候需要在 Gradle 依赖项中使用 Kapt?

我啥时候需要处理(服务器-客户端)对象?

我啥时候应该使用“隐藏文本框”,啥时候应该使用(html 5)“数据属性”?