Wie man mit React elegant CSS schreibt

Wie man mit React elegant CSS schreibt

1. Inline-Stile

Vorteile: Diese Methode ist relativ einfach und klar und fügt dem Tag Stilattribute hinzu.

Nachteile: Diese Methode kann dazu führen, dass die Projektstruktur aufgebläht wird und CSS-Benennungskonflikte auftreten.

importiere React, {Komponente} von 'react'
Importiere PropTypes aus „Prop-Types“
exportiere Standardklassenindex erweitert Komponente {
    statische Eigenschaftentypen = {
     Titel: PropTypes.string
    }
    rendern() {
        const h1Style={textAlign:'center',marginBottom:'20px',lineHeight:'35px',
        Höhe:'30px'}
        const {title} = diese.props
        zurückkehren (
         <div>
             <h1 style={h1Style}>{Titel}</h1>
             <hr/>
         </div>
        )
    }
}

2. Importmethode verwenden

Vorteile: Diese Methode ist flexibler zu verwenden, ähnlich der externen Einführung in CSS

Nachteile: Da der Reaktionsstil standardmäßig global ist, kann es zu Stilkonflikten kommen

Verwendung: Erstellen Sie eine neue CSS-Datei, legen Sie den Klassennamen über das className-Attribut in der JSX-Syntax fest und verwenden Sie den Klassennamen in CSS. Diese Methode kann einen ternären Ausdruck verwenden, um den Klassennamen durch Definieren einer Variablen auszuwählen.

importiere React, {Komponente} von 'react'
importiere "./index.css"
exportiere Standardklassenindex erweitert Komponente {
    Zustand={
        Flagge: wahr
    }
Farbe ändern=()=>{
    this.setState((Zustand, Eigenschaften)=>{
        zurückkehren {
           Flagge:!Staat.Flagge
        }
    })
}
    rendern() {
        const {flag}=dieser.Zustand
        zurückkehren (
            <div>
                <h1 className={flag?'blueColor':'redColor'}>Warten Sie nicht, bis Ihre Haare grau werden</h1>
                <button onClick={this.changeColor} className="btnStyle">Klicken, um die Schriftfarbe zu ändern</button>
            </div>
        )
    }
}

.blaueFarbe{
    Farbe: blau;
}
.roteFarbe{
    Farbe: rot;
}
.btnStyle{
    Breite: 260px;
    Höhe: 50px;
    Hintergrundfarbe: Aqua;
    Farbe: #fff;
    Rand: keiner;
    Schriftgröße: 28px;
    Rahmenradius: 10px;
}

3. CSS-Modul-Export

Vorteile: Keine Namenskonflikte, Stile sind nur lokal gültig

Nachteile: Zu umständlich, Module müssen jedes Mal importiert und exportiert werden, was gleichbedeutend damit ist, alle CSS-Klassennamen als Attribute eines Objekts zu behandeln. Wenn das Objektattribut benötigt wird, wird der Klassenname durch Aufrufen des Objektattributs aufgerufen. Die Möglichkeit, CSS-Konflikte zu lösen, besteht darin, verschiedenen Klassennamen Präfixe hinzuzufügen, ähnlich wie beim Festlegen von Modulen für den Stil in Vue.

verwenden:

  • Solange im CRA-Gerüst der CSS-Stil in der übergeordneten Komponente eingeführt wird, ist dieser Stil der globale Stil.
  • Verwenden der Modularität zum Lösen von Stilkonflikten in React
  • Wenn im CRA-Gerüst eine Stildatei modularisiert werden muss, benennen Sie die Stildatei einfach xx.module.css/xx.module.scss

importiere React, {FC,useState} von "react"
importiere Cmittem von "@/components1/cmittem"
importiere cssObj aus "./cmtlist.module.scss"
const Cmtlist:FC<{}>=(props)=>{
    zurückkehren (
        <div>
             <h1 className={cssObj.title}>Kommentareliste</h1>
       
       </div>
    )
}

Standard-Befehlsliste exportieren

4. Verwenden Sie gestaltete Komponenten

Vorteile: Die Kombination aus Template-String-Tag + Style ist eine Komponente, die mit einem Großbuchstaben beginnt. Man kann beispielsweise sagen, dass sie einige der beliebtesten Schreibmethoden in der React-Entwicklung integriert. Für React-Entwickler ist dies ein sehr guter Einstieg. Daher haben verschiedene Entwickler bei React-Komponenten unterschiedliche Gewohnheiten hinsichtlich der Verwendung von externem CSS oder Komponenten-CSS.

verwenden:

Es müssen Styled-Components installiert werden

npm i styled-components oder yarn add styled-components

vscode-Installations-Plugin zum einfachen Schreiben

4.1 Inbetriebnahme

importiere 'antd/dist/antd.less'
Importieren Sie Stile aus „Stilkomponenten“.
Funktion App() {
 const HomeWrapper = styled.div`
 Schriftgröße: 50px;
 Farbe: rot;
 Spanne{
   Farbe: orange;
   &.aktiv{
      Farbe: grün;
   }
   &:schweben{
     Farbe: blau;
     Schriftgröße: 40px;
   }
   &::nach{
     Inhalt: „ssss“
   }
   }
 `
  zurückkehren (
    <div Klassenname="App">
 <h1>Ich bin ein Titel</h1>
 <HomeWrapper>
 <h2>Ich bin ein Untertitel</h2>
   <span>Karussell 1</span>
   <span className="active">Karussell 2</span>
   <span>Karussell 3</span>
   <span>Karussell 4</span>
 </HomeWrapper>
    </div>
  );
}

Standard-App exportieren;

4.2 Festlegen von Attributen über attrs

importiere 'antd/dist/antd.less'
Importieren Sie Stile aus „Stilkomponenten“.
Funktion App() {
 const ChangeInput = styled.input.attrs({
   Platzhalter: 'wangsu',
   Hintergrundfarbe: „rot“
 })`
 Hintergrundfarbe: #7a7ab4;
 Farbe:${props=>props.bgColor}
 `
  zurückkehren (
    <div Klassenname="App">
 <h1>Ich bin ein Titel</h1>
 <ChangeInput Typ="Text"/>
    </div>
  );
}

Standard-App exportieren;

4.3 CSS-Vererbung

importiere React, {Komponente} von 'react'
Importieren Sie Stile aus „Stilkomponenten“.
const HYbutton = styled.button`
   Farbe: rot;
   Rand: 1px durchgezogen #ccc;
   Polsterung: 10px 20px;
`
//Hier verwenden wir Vererbung const XLbutton = styled(HYbutton)`
Hintergrundfarbe: blau;
`
exportiere Standardklasse Button erweitert Komponente {

    rendern() {
        zurückkehren (
            <div>
                <HYbutton>Dies ist eine Schaltfläche</HYbutton>
                <XLbutton>Dies ist eine geerbte Schaltfläche</XLbutton>
            </div>
        )
    }
}

Ich verwende diese Methode in letzter Zeit bei der Entwicklung von Projekten. Sie fühlt sich sehr neuartig an. Obwohl es in der Community Meinungsverschiedenheiten gibt, gefällt mir persönlich diese Methode zum Festlegen von CSS. Ich muss die globalen Stilprobleme überhaupt nicht berücksichtigen.

Oben finden Sie Einzelheiten zum eleganten Schreiben von CSS mit React. Weitere Informationen zum Schreiben von CSS mit React finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • React-Implementierungsbeispiel mit Amap (react-amap)
  • Detaillierte Erklärung des virtuellen DOM und des Diff-Algorithmus in React
  • React-Beispiel, das den Fortschritt des Datei-Uploads zeigt
  • So verwenden Sie Lazy Loading in React, um die Ladezeit des ersten Bildschirms zu verkürzen
  • So führen Sie das React-Projekt auf dem offiziellen WeChat-Konto aus
  • Kapseln Sie eine einfachste ErrorBoundary-Komponente zur Behandlung von React-Ausnahmen
  • Schritte zur Erstellung einer React Fiber-Struktur
  • Detaillierte Erklärung der Verwendung von Refs in den drei Hauptattributen von React
  • Schreiben Sie ein React-ähnliches Framework von Grund auf
  • React useEffect verstehen und verwenden

<<:  Perfekte Lösung für das Problem, dass Windows Server 2012 oder 2016 .NET Framework 3.5 nicht ohne Festplatte installieren kann

>>:  Zusammenfassung gängiger SQL-Anweisungen in MySQL

Artikel empfehlen

CSS3-Flip-Card-Nummern-Beispielcode

Ich habe heute eine Aufgabe von der Firma erhalte...

Detaillierte Erklärung von Prototypen und Prototypenketten in JavaScript

Inhaltsverzeichnis Prototyp-Kettendiagramm Grundl...

So ändern Sie den Replikationsfilter in MySQL dynamisch

MySQL Replikationsfilter dynamisch ändern Lassen ...

Natives JS zur Implementierung eines Hover-Dropdown-Menüs

JS implementiert ein Hover-Dropdown-Menü. Dies is...

js zur Implementierung der Kollisionserkennung

In diesem Artikelbeispiel wird der spezifische Co...

So richten Sie eine VSCode-Remoteverbindung zum Server-Docker-Container ein

Inhaltsverzeichnis Ziehen Sie das Bild Ausführen ...

Interpretation von 17 Werbewirksamkeitsmaßen

1. 85 % der Anzeigen werden nicht gelesen <br ...

Detaillierte Erklärung der Schritte zum Erstellen eines Webservers mit node.js

Vorwort Es ist sehr einfach, einen Server in node...

Informationen zur Layoutmethode für Inhaltsüberlauf in Tabellen

Was ist Inhaltsüberlauf? Wenn tatsächlich viel Te...

Neue Ideen zur Zeitformatierung in JavaScript toLocaleString()

Inhaltsverzeichnis 1. Konventionelle Ideen zur Ze...

Installieren Sie eine virtuelle Python-Umgebung in Ubuntu 18.04

Nur als Referenz für Python-Entwickler, die Ubunt...