在React中使用this.props和props之间有区别吗?

时间:2016-08-30 14:31:54

标签: reactjs

在您定义this之后,使用this.propsprops之间有区别吗?

constructor(props) {
  super(props);

  this.state = {
    input: this.props.input,
    input2: props.input2
  };
}

在这种情况下,inputinput2之间有什么区别?

4 个答案:

答案 0 :(得分:12)

ES2015(ES6)课程的规则基本上归结为:

  

在子类构造函数中,在 super 被调用之前, 不能使用

     

ES6类构造函数必须调用 super (如果它们是子类),或者它们必须显式返回一些对象来取代未初始化的对象。

因此在构造函数中调用 super(props)。道具和this.props是一样的。所以,

props === this.props // true

答案 1 :(得分:3)

基本上,在这种情况下它是相同的,但是如果你考虑整个组件,那么props只有在你传递props作为函数参数时才可用,例如下面的例子

componentWillMount(){
  this.someFunc(this.props);
}

componentWillReciveProps(nextProps){
  this.someFunc(nextProps);
}

someFunc(props) {
 ...... 
 // in here props and this.props are completely different
 as props is you latest props while this.props can be you previous props
}

虽然您可以从任何组件访问this.props,但我希望这能为您提供想法

答案 2 :(得分:3)

没有差异。

props === this.props // true

答案 3 :(得分:0)

在构造函数中调用super(props)后没有区别。 您可以在这里进一步了解它:https://overreacted.io/why-do-we-write-super-props/