2016-04-20 2 views
9

Я пытаюсь выяснить, как клонировать существующий элемент с дополнительными реквизитами.Реакция: добавление реквизитов к существующему компоненту

Для справки:

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

Я пытался сделать что-то вроде

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

, но это не работает.

Как бы это осуществить?

+1

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

ответ

23

Вам нужно клонировать элемент и добавить дополнительные опоры с помощью React.cloneElement например:

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

React.createElement() принимает либо строку или Реагировать тип класса в качестве первого параметра, так что не будет работать, если вы» re пытается клонировать элемент.

Конечно, there's React.cloneElement() instead, который выполняет глубокую копию другого элемента React и может дополнительно предоставить новые реквизиты.

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

Должно работать.

+0

этот ответ совпадает с принятым ответом ... –

Смежные вопросы