2015-10-14 20 views
13

Próbuję dodać rekwizyt, który zależy od innych rekwizytów, które będą zasadniczo przekazywane przez składnik właściciela komponentu.`this.props` wewnątrz` getDefaultProps() `z React?

Więc zrobiłem:

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

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

Ale wydaje się, że rekwizyty user i comment nie są dostępne w getDefaultProps czasu połączeń.

Czy istnieje sposób zdefiniowania domyślnego wniosku, który zależy od innych rekwizytów, które zostaną przekazane z komponentów właściciela?

Odpowiedz

21

getDefaultProps nazywa się przed wszelkie przypadki są tworzone, a zatem nie może powoływać się na this.props. Ma to na celu uzyskanie domyślnych rekwizytów na wypadek, gdyby właściciel ich nie przekazał.

Alternatywnym rozwiązaniem byłoby użycie getInitialState, ponieważ dałoby to dostęp do this.props.user i this.props.comment.

2

Naprawdę nie powinieneś modyfikować rekwizytów, jestem pewien, że dostaniesz ostrzeżenie konsoli o tym.

Użytkownik może chcieć zapisać Admire w stanie za pomocą funkcji getInitialState.

E.g.

propTypes: { 
    user: React.PropTypes.object, 
    comment: React.PropTypes.object 
}, 
getInitialState: function() { 
    return { 
     admire: new Admire({ 
      user: this.props.user, 
      comment: this.props.comment 
     }); 
    }; 
} 
Powiązane problemy