im za pomocą reakcji i mam element, który po prostu musi renderować dzieci i dodać je klasy zgodnie z warunkiem. Jaki jest najlepszy sposób robienia tego?React - dodawanie klasy do komponentów dla dzieci
Odpowiedz
wyobraziłem go tydzień temu, to co ja chciał:
export default class ContainerComponent extends React.Component {
constructor(props) {
super(props);
this.modifyChildren = this.modifyChildren.bind(this);
}
modifyChildren(child) {
const className = classNames(
child.props.className,
{...otherClassses}
);
const props = {
className
};
return React.cloneElement(child, props);
}
render() {
return (<div>
{React.Children.map(this.props.children, this.modifyChildren(child))}
</div>);
}
}
Próbowałem tego rozwiązania, jednak dostaję błąd z funkcji renderowania, "dziecko nie jest zdefiniowane." Jeśli zmienię tę funkcję na anonimową, zamiast wywoływania metody klasy (this.modifyChildren w twoim przykładzie), błąd zniknie i wszystko działa poprawnie. Działa to zarówno z "grubą strzałką" i tradycyjnymi anonimowymi funkcjami JS. Nie mogę zrozumieć, dlaczego działa on dla ciebie, a nie dla mnie, gdy nasz kod jest prawie identyczny. –
Wewnątrz czyni metodę komponentu:
var childClasses = [],
childClassNames;
if (condition) {
childClasses.push('my-class-name');
}
childClassNames = childClasses.join(' ');
return (<div className={childClassNames}>
.... (your component here)
</div>);
Nie chcę tego robić w każdym z komponentów, chcę komponent, który je zawiera, do testowania i dodać klasę, jeśli jest to konieczne. – Pachu
Nie jestem pewien, co dokładnie próbujesz osiągnąć. Twój element macierzysty może obliczyć wszystkie potrzebne klasy i przekazać je jako rekwizyty dla dzieci. – Maggie
można przekazać rekwizyt do dziecka i może wybrać to, co klasa zastosować (lub po prostu przekazać nazwę klasy, ale to jest bardziej semantyczny):
W swoim dzieckiem render:
const classes = [];
if (props.contentVisible)
classes.push('visible');
<div className={classes.join(' ')} />
- 1. Opóźnione renderowanie komponentów React
- 2. Jak nazwać klasę es6 (dla komponentów React)
- 3. Przekazywanie rekwizytów do React-Router 4.0.0 Trasy dla dzieci
- 4. Przekazywanie parametrów do komponentów w React Native
- 5. React JS i PropTypes powtórzenie całej współdzielonych komponentów
- 6. React, Redux, React-Router?
- 7. Kolejność komponentów klasy inicjalizacji
- 8. Przechodzenie przez dzieci dzieci i dodawanie funkcji do wszystkich wejść, podczas gdy inne dzieci pozostają nietknięte
- 9. Dodawanie klasy CSS do Html.BeginForm()
- 10. Dodawanie Redux do istniejącej aplikacji React
- 11. Dodawanie zachowania REST do klasy z kolbą, case dla planów?
- 12. Dodawanie klasy CSS do date_select
- 13. Dodawanie atrybutu DebuggerStepThrough do klasy
- 14. Angular2 - dwukierunkowe wiązanie danych we właściwości klasy komponentów/komponentów?
- 15. Jak uzyskać nazwę ciągu komponentów komponentu React Native?
- 16. Dodawanie obrazu ikony do klasy css dla elementów html
- 17. add klasa dla dzieci - jQuery
- 18. Tworzenie niestandardowych komponentów macierzystych React z węzłami potomnymi
- 19. Oracle Weblogic dodawanie słoików do ścieżki klasy?
- 20. jak uzyskać dostęp do komponentów WinForm z innej klasy?
- 21. Dodawanie programowych adnotacji do klasy Java
- 22. Dodawanie metody rozszerzenia do klasy ciągów - C#
- 23. Dodawanie nowej metody do klasy Array
- 24. Dodawanie plików JAR do ścieżki klasy IntellijIdea
- 25. Dodawanie dodatkowych właściwości do anonimowej klasy
- 26. XSLT - Dodawanie klasy do czegoś z klasą?
- 27. Dodawanie klasy do wiersza ng-grid
- 28. Dodawanie nowej metody do klasy poprzez odbicie
- 29. JQuery dodawanie klasy do sklonowanego elementu
- 30. Dodawanie pól do zastępowanym klasy w Clojure
[To] (http://stackoverflow.com/questions/26863938/modify-attributes-of-children-in-reactjs-component) powinno pomóc. –