2016-04-20 2 views
9

Sto cercando di capire come clonare un elemento esistente con oggetti di scena aggiuntivi.Reagire: aggiungere oggetti di scena a un componente esistente

Per riferimento:

this.mainContent = <Hello message="Hello world!" /> 

ho tentato di fare qualcosa di simile

React.createElement(this.mainContent, Object.assign({}, 
    this.mainContent.props, { anotherMessage: "nice to meet ya!" })); 

ma non funziona.

Come potrei realizzare questo?

+1

https://facebook.github.io/react/docs/top-level-api.html#react.cloneelement – azium

risposta

23

È necessario clonare l'elemento e aggiungere gli oggetti di scena durante l'utilizzo di React.cloneElement esempio:

var clonedElementWithMoreProps = React.cloneElement(
    this.mainContent, 
    { anotherMessage: "nice to meet ya!" } 
); 
// now render the new cloned element? 
4

React.createElement() prende una stringa o un tipo di classe Reagire come primo parametro, in modo che non funziona se si' sta cercando di clonare un elemento.

Ovviamente, there's React.cloneElement() instead, che esegue una copia profonda di un altro elemento React e può facoltativamente fornire nuovi oggetti di scena.

var foo = React.cloneElement(this.mainContent, {anotherMessage: "nice to meet ya!"}); 

Dovrebbe funzionare.

+0

questa risposta è la stessa della risposta accettata ... –