2014-11-11 10 views
6

Ich versuche, herauszufinden, wie die Kinder einer Komponente beispielsweise zu modifizieren, eine Klasse hinzuzufügen. Ich habe versucht zu tun:Ändern Attribute von Kindern in ReactJS Komponente

var inputReactObject = React.Children.only(this.props.children); 

inputReactObject.className = "test"; 

Das scheint jedoch nicht zu funktionieren.

Ist es möglich, Kinder-Attribute in einer ReactJS Komponente zu ändern?

Voll Plunker: http://plnkr.co/edit/msbUSDBQn17qXzBHzGXD?p=preview

+1

Ich bin mir nicht sicher, aber vielleicht, was Sie wirklich versuchen, ist, Requisiten von einem Elternteil zu einem Kind zu übergeben. Sehen Sie sich diese Änderung an: http://plnkr.co/edit/pzI85OPyJjCOpvcZ5SpP – lpiepiora

+0

Das Problem mit Ihrem Vorschlag ist, dass das Eingabeelement Teil der Komponente ist. Ich möchte in der Lage sein, nur eine Komponente zu haben, die Sie für Textfelder, Textbereiche, Checkboxen, Radioboxen, usw. verwenden könnten), die die Fähigkeit erfordern würden, diese Kinderrequisiten zu ändern. – ryanzec

+0

Sie sollten Requisiten nicht modifizieren, aber Sie können ein Kindelement mit Requisiten klonen (obwohl ich die Lösung aus meinem obigen Beitrag bevorzugen würde). Sehen Sie sich diese plunkr out: http://plnkr.co/edit/tlbDnMl4RoCtI8WNW9qW?p=preview – lpiepiora

Antwort

6

Wie @lpiepiora Plunker erwähnt, ist der Code zu tun, was ich sein will:

var inputReactObject = React.Children.only(this.props.children); 
var clonnedChild = React.addons.cloneWithProps(inputReactObject, { 
    className: "input-element test" 
}); 

return clonnedChild; 
+0

ersetzt dies die Klasse des Kindes? – jacoballenwood

+0

@jakeaaron ich denke nein – Beraliv

3

Nun, da cloneWithPropsdeprecated ist, würde der aktuelle Ansatz

var inputReactObject = React.Children.only(this.props.children); 
var clonedChild = React.cloneElement(inputReactObject, { 
    className: "input-element test" 
}); 

return clonedChild; 
Verwandte Themen