Ich benutze reagieren und ich habe eine Komponente, die einfach die Kinder rendern und fügen Sie ihnen eine Klasse nach einer Bedingung. Was ist der beste Weg, es zu tun?React - Hinzufügen von Klasse zu Kinder-Komponenten
Antwort
ich es dachte, vor einer Woche, ist dies, was ich wollte:
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>);
}
}
Ich habe diese Lösung versucht, jedoch bekomme ich einen Fehler von der Renderfunktion, "Kind ist nicht definiert." Wenn ich dort zu einer anonymen Funktion wechsle, anstatt eine Klassenmethode aufzurufen (this.modifyChildren in Ihrem Beispiel), verschwindet der Fehler und alles funktioniert einwandfrei. Dies funktioniert sowohl mit "fettem Pfeil" als auch mit traditionellen anonymen JS-Funktionen. Ich kann nicht herausfinden, warum es für dich funktioniert und nicht für mich, wenn unser Code fast identisch ist. –
Innere Methode Ihrer Komponente machen:
var childClasses = [],
childClassNames;
if (condition) {
childClasses.push('my-class-name');
}
childClassNames = childClasses.join(' ');
return (<div className={childClassNames}>
.... (your component here)
</div>);
Ich möchte es nicht in jeder der Komponenten tun, ich möchte die Komponente, die sie enthält, die Tests durchführen und die Klasse hinzufügen, falls erforderlich – Pachu
Nicht sicher, was genau Sie versuchen zu erreichen. Ihre Elternkomponente kann alle erforderlichen Klassen berechnen und sie als Requisiten an die Kinder weitergeben. – Maggie
Sie eine Stütze nach unten auf das Kind passieren kann und es kann wählen, welche Klasse anwenden (oder nur die Klassennamen übergeben, aber das ist mehr semantisches):
In Ihrem Kind machen:
const classes = [];
if (props.contentVisible)
classes.push('visible');
<div className={classes.join(' ')} />
- 1. React Hinzufügen von Klasse zu Element
- 2. hinzufügen aktive Klasse (React JS)
- 3. Klasse zu Geschwistern hinzufügen, wenn Komponente in React geklickt hat
- 4. Hinzufügen von Klasse zu Formularauswahl
- 5. Hinzufügen von Requisiten zu ... this.props
- 6. Klasse zu ValidationSummary hinzufügen
- 7. Klasse zu Kind hinzufügen
- 8. Wie alle Kinderkomponenten eines Containers entfernen?
- 9. Hinzufügen von Methoden zu Komponenten höherer Ordnung in React
- 10. Hinzufügen von Stil zu einem Array von react Komponenten
- 11. Hinzufügen von Klasse zu link_to verursacht Fehler
- 12. Konvertieren von jQuery Klasse Hinzufügen zu JavaScript
- 13. Hinzufügen von Klasse zu entsprechen() führt
- 14. Hinzufügen von DebuggerStepThrough Attribut zu Klasse
- 15. React Native fbsdk Hinzufügen von Berechtigungen
- 16. Hinzufügen von Stilattributen zu einer CSS-Klasse dynamisch in react app
- 17. C# Klasse ID von einer Klasse zu einer anderen hinzufügen
- 18. Klasse zu query_posts loop hinzufügen
- 19. Überschreiben CSS-Klasse in React
- 20. Konvertieren Const zu Klasse in React Native?
- 21. Klasse dynamisch zu div hinzufügen
- 22. react-motion - Hinzufügen dieser Bibliothek zu Schienen
- 23. Hinzufügen eines Bildes zu React Bootstrap dropdown
- 24. Klasse zuweisen in React
- 25. Hinzufügen von Schriftgröße zu benutzerdefinierten Schriftart in react-native
- 26. Hinzufügen von Routen zu einer React-/Firebase-App
- 27. Hinzufügen von Attribut zu i18n Strings in React Native
- 28. Hinzufügen von .jar zu Abhängigkeiten in React Native
- 29. (React ES6) Dynamischen Hinzufügen von Modal Trigger zu Map Markern
- 30. Hinzufügen von Bildern zu Bildern in React Native?
[Dies] (http://stackoverflow.com/questions/26863938/modify-attributes-of-children-in-reactjs-component) sollten Ihnen helfen. –