2015-10-14 6 views
13

Sto provando ad aggiungere un oggetto che dipende da altri oggetti di scena che verranno sostanzialmente passati dal componente proprietario del componente.`this.props` all'interno di` getDefaultProps() `di React?

Così ho fatto:

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

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

ma sembra che puntelli user e comment non sono accessibili al getDefaultProps tempo di chiamata.

C'è un modo per definire un puntello predefinito che dipende da altri oggetti di scena che verranno passati dai componenti del proprietario?

risposta

21

getDefaultProps è chiamato prima di creare qualsiasi istanza e quindi non si può fare affidamento su this.props. È pensato per ottenere gli oggetti di scena di default nel caso in cui il proprietario non li abbia passati.

Una soluzione alternativa sarebbe quella di utilizzare getInitialState in quanto ciò consentirebbe l'accesso a this.props.user e this.props.comment.

2

In realtà non dovresti modificare gli oggetti di scena come questo, sono abbastanza sicuro che riceverai un avvertimento da console su come farlo.

È possibile memorizzare lo stato Admire tramite la funzione 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 
     }); 
    }; 
} 
Problemi correlati