Ich verwende eine React-Komponentenbibliothek (React Toolbox), die diese Klasse in ihrer Tab-Komponente unter Verwendung von CSS-Modulen und Webpack ausgibt: Die tab
ist eine Klassenname-Stütze, die ich übergebe. Die Klassen label
und active
stammen aus der Bibliothek. Ich möchte einen anderen Satz von Stilen auf active
, etwas wie .tab.active
, wo tab
bezieht sich auf die Stile, die ich erstellt habe und active
entspricht der generierten Selektor die Bibliothek erstellt hat, aber kann nicht herausfinden, wie dies mit CSS-Modulen zu tun. Ich muss diesen dynamischen Selektor überschreiben: .label___1nGy.active___1Jur
.CSS-Module, Reagieren und Überschreiben von CSS-Klassen
Antwort
Alte Post, aber immer noch relevant, so eine Antwort Zugabe allein solche mit ähnlichem Problem
Zwar nicht von Natur aus möglich in CSS Module zu helfen, der Autor der Reaktion-Toolbox Bibliothek hat dieses spezielle Problem sehr schön
lesen ihre github docs tatsächlich gelöst, die bei https://github.com/react-toolbox/react-toolbox#customizing-components
zum Thema mehr in die Tiefe sindEine Liste der Theme-fähig Klassen für eine bestimmte Komponente auf der Komponente Demo-Seite auf ihrer Website zu
einen Klassennamen für Reiter als Übergang auch in Ihrem Fall gegeben ist, würden Sie auch ein Thema mit Klassen erstellen, die überschreiben die gewünschten Teile des Standardthemas und übergeben diese als theme
prop. Zum Beispiel etwas alog den Linien ...
MyComponentWithTabs.css
.tab {
color: white;
}
MyTabTheme.css
.active {
color: hotpink;
}
MyComponentWithTabs.js
import styles from './MyComponentWithTabs.css'
import tabTheme from './MyTabTheme.css'
// blah blah...
return <Tab key={index} className={styles.tab} theme={tabTheme} />
Unter der Oberfläche dieses einen Dekorateur verwendet sie in separate Bibliothek abstrahiert haben react-css-themr, ich geben wird empfohlen, eine zu lesen, da es wird erläutert, wie die Standardwerte mit Überschreibungswerten in viel größerer Tiefe zusammengesetzt sind, einschließlich der verschiedenen Verschmelzen Strategien, die sie verwenden
CSS-Module werden Sie sicher nicht zulassen, dass der aktiven Klassennamen überschreiben (weitgehend durch Design). Wirklich sollte es über eine API, z. 'activeClassName'.
Wenn die Maintainer nicht einverstanden ist, oder Sie müssen diese schnell, dann können Sie ganz einfach Ihre eigenen aktiven classname hinzufügen, da Ihre Implementierung Komponente den Index Zustandsverwaltungs:
import {Tab, Tabs} from 'react-toolbox';
import styles from './MyTabs.css';
class MyTabs extends React.Component {
state = {
index: 1
};
handleTabChange(index) {
this.setState({ index });
}
render() {
const { index } = this.state;
return (
<Tabs index={index} onChange={this.handleTabChange}>
<Tab label="Tab0" className={index === 0 ? styles.active : null}>
Tab 0 content
</Tab>
<Tab label="Tab1" clasName={index === 1 ? styles.active : null}>
Tab 1 content
</Tab>
</Tabs>
);
}
}
Haftungsausschluss: Code ist nicht getestet.
hatte ich einen ähnlichen Fall, und ich löste es etwa so:
import classNames from 'classnames';
...
const activeClassName = {};
activeClassName[`${styles.active}`] = this.props.isActive;
const elementClassNames = classNames(styles.element, activeClassName);
return <div className={elementClassNames} />
ich das classnames
Paket mit bin, um dynamisch die aktive Klasse hinzufügen, der isActive
prop basiert. Anstelle eines isActive
Props können Sie einen beliebigen booleschen Wert angeben. sein kann
Eine lapidare Weise, dies zu tun:
const elementClassNames = classNames(styles.element, {[styles.active]: this.props.isActive});
- 1. Kombinieren von Reagieren und Reagieren-Native
- 2. Reagieren und Importieren von Klassen
- 3. Rails 4 Wie überschreiben Devise Weg, auf Fehler reagieren
- 4. Reagieren: rufen Sie übergeordnete Version der Funktion beim Überschreiben
- 5. Wie überschreiben Sie eine übergeordnete Klassenmethode in Reagieren?
- 6. Verwenden von Ereignishandlern und Überschreiben von Ereignisauslösemethoden
- 7. Schreiben/Lektorat/eine JSON-Datei überschreiben in reagieren nativen
- 8. Reagieren, Redux und unveränderbar
- 9. GraphQLList und reagieren
- 10. reagieren-Router und Kontexttypen
- 11. Reagieren/Redux Abrufen und Filtern von Daten
- 12. Reagieren und Rendern großer Teile von Daten
- 13. Subclipse überschreiben und commit?
- 14. reagieren und setState und Autocomplete
- 15. reagieren isomorph und Anfangsdaten
- 16. Reagieren und Leaflet
- 17. Sortierbare UUIDs und Überschreiben von ActiveRecord :: Base
- 18. Überschreiben von Companion-Objektwerten und Scala MatchError
- 19. Ausgabe von Informationen mit Super und Überschreiben
- 20. Datei verschieben und überschreiben
- 21. Reagieren native Redox und ListView
- 22. setState von reagieren nicht
- 23. Reagieren Native: TabBarIOS und Navigation
- 24. Router und React.rb Reagieren Mit
- 25. Fehler laufen reagieren Tests: Enzyme, Jest und Reagieren
- 26. Problem mit setState in Reagieren und reagieren-Draggable
- 27. Split reagieren Code in Bibliothek Bündel reagieren und Komponenten bündeln
- 28. Überschreiben von Logback-Konfigurationen
- 29. Entfernen von doppelten Array-Werten und Speichern von ihnen [reagieren]
- 30. Amazon S3 Umbenennung und Überschreiben von Dateien, Empfehlungen und Risiken
können Sie uns ein kleines Beispiel Ihres Codes zeigen? – cocoa
mit Code aktualisiert. –
Ich denke, es wäre einfacher, die Toolbox-Komponente zu ändern, als einen dynamisch generierten Klassennamen zu überschreiben ... Oder Sie könnten den React Toolbox Webpack Loader verwenden https://github.com/react-toolbox/react-toolbox#customization – fl0cke