In React-Anwendungen mit ES6 können separate CSS-Dateien in Komponenten importiert werden. Bei einem solchen Import wird das CSS jedoch häufig global gerendert, was sich auf alle Komponenten auswirkt. Dies kann zu CSS-Konflikten und unbeabsichtigtem Stil führen.
Das gewünschte Verhalten besteht darin, dass CSS auf einzelne Komponenten beschränkt wird, um sicherzustellen, dass Stile nur innerhalb des Geltungsbereichs dieser Komponente angewendet werden. Das bedeutet, dass der Stil „lokal“ für die Komponente sein sollte und verschwindet, wenn die Komponente nicht gemountet wird.
Um komponentenbezogenes CSS zu erreichen, sollten Sie die Verwendung von CSS-Modulen oder ähnlichen CSS-Ins in Betracht ziehen -JS-Pakete. Beispiele hierfür sind Emotion, Styled Components oder Pakete aus dem umfangreichen npm-Katalog.
CSS-Module bieten beispielsweise einen Mechanismus, um Klassennamen und Animationsnamen lokal festzulegen. URLs und Importe werden im Modulanforderungsformat verarbeitet.
import React from 'react'; import styles from './styles/button.css'; class Button extends React.Component { render() { return ( <button className={styles.button}>Click Me</button> ); } } export default Button;
Mit CSS-Modulen könnte das generierte CSS wie folgt aussehen:
.button_3GjDE { border-radius: 3px; background-color: green; color: white; }
Das Ein eindeutiger Klassenname mit dem Hash _3GjDE verhindert Konflikte, indem der Stil auf den Button beschränkt wird Komponente.
Eine alternative Lösung besteht darin, generische Selektoren zu vermeiden und eine klassenbasierte Namenskonvention für Komponenten und Elemente zu verwenden. Zum Beispiel:
.aboutContainer { # Some style } .aboutContainer__code { # Some style }
Jedes Element, das ein Styling erfordert, würde einen eindeutigen Klassennamen erhalten, um sicherzustellen, dass Stile nur innerhalb der spezifischen Komponente angewendet werden.
Das obige ist der detaillierte Inhalt vonWie kann ich in React komponentenbasiertes CSS erreichen, um Stilkonflikte zu vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!