2014-11-11 14 views
6

Próbuję dowiedzieć się, jak zmodyfikować elementy podrzędne komponentu, na przykład dodać klasę. Próbowałem wykonać:Modyfikuj atrybuty elementów podrzędnych w komponencie ReactJS

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

inputReactObject.className = "test"; 

To jednak nie działa.

Czy można modyfikować atrybuty podrzędne w komponencie ReactJS?

Pełna plunker: http://plnkr.co/edit/msbUSDBQn17qXzBHzGXD?p=preview

+1

Nie jestem pewien, ale może to, co naprawdę próbujesz zrobić, to przekazać rekwizyty od rodzica do dzieci. Sprawdź tę modyfikację swojego plunkera: http://plnkr.co/edit/pzI85OPyJjCOpvcZ5SpP – lpiepiora

+0

Problem z twoją sugestią jest taki, że element wejściowy jest częścią komponentu. Chciałbym mieć tylko jeden komponent, który można wykorzystać w polach tekstowych, obszarach tekstowych, polach wyboru, skrzynkach radiowych itp.), Co wymagałoby możliwości modyfikacji rekwizytów dla dzieci. – ryanzec

+0

Nie powinieneś modyfikować rekwizytów, ale możesz sklonować element potomny z rekwizytami (chociaż wolałbym rozwiązanie z mojego postu powyżej). Sprawdź ten plunkr: http://plnkr.co/edit/tlbDnMl4RoCtI8WNW9qW?p=preview – lpiepiora

Odpowiedz

6

Jak wspomniano przez @lpiepiora plunker kod robić co chcę byłoby:

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

return clonnedChild; 
+0

zastąpi klasę dziecka? – jacoballenwood

+0

@jakeaaron chyba nie – Beraliv

3

Teraz cloneWithProps jest deprecated, obecne podejście byłoby

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

return clonedChild; 
Powiązane problemy