2015-10-14 9 views
13

Ich versuche, eine Requisite hinzuzufügen, die von anderen Requisiten abhängt, die im Grunde von der Eigentümerkomponente der Komponente übergeben werden.`this.props` in` getDefaultProps() `von React?

Also habe ich:

propTypes: { 
    user: React.PropTypes.object, 
    comment: React.PropTypes.object 
}, 

getDefaultProps: function() { 
    return { 
    admire: new Admire({ 
       user: this.props.user, 
       comment:this.props.comment 
      }) 
    }; 
} 

Aber es scheint, wie Requisiten user und comment nicht zugänglich sind bei getDefaultProps Anrufzeit.

Gibt es eine Möglichkeit, eine Standardrequisite zu definieren, die von anderen Requisiten abhängt, die von Eigentümerkomponenten übergeben werden?

Antwort

21

getDefaultProps aufgerufen wird, bevor alle Instanzen erstellt werden und somit verlassen können nicht auf this.props. Es ist gedacht, die Standard-Requisiten zu bekommen, falls der Besitzer sie nicht passiert hat.

Eine alternative Lösung wäre, getInitialState zu verwenden, da Sie Zugriff auf this.props.user und this.props.comment erhalten würden.

2

Sie sollten nicht wirklich die Requisiten so ändern, ich bin ziemlich sicher, dass Sie eine Konsole Warnung darüber erhalten werden.

Sie können Admire in den Status über die getInitialState-Funktion speichern.

z.

propTypes: { 
    user: React.PropTypes.object, 
    comment: React.PropTypes.object 
}, 
getInitialState: function() { 
    return { 
     admire: new Admire({ 
      user: this.props.user, 
      comment: this.props.comment 
     }); 
    }; 
} 
Verwandte Themen