So verwenden Sie React-Slots

So verwenden Sie React-Slots

brauchen

Wir haben selbst eine Komponente geschrieben. Wenn wir auf die Komponente verweisen, möchten wir Inhalt in die Komponente schreiben, und der geschriebene Inhalt kann von der Komponente erkannt und gesteuert werden. Studenten, die Vue verwendet haben, werden sicherlich sofort an Slots denken. React unterstützt auch Slots. Als Nächstes verwenden wir React, um eine Komponente zu entwickeln, die Slots unterstützt.

Kernidee

Die drei von der übergeordneten Komponente an die untergeordnete Komponente übergebenen Divs werden standardmäßig über Props an die untergeordnete Komponente übergeben, und dann können wir die Darstellung der untergeordneten Elemente in der untergeordneten Komponente steuern.

Kerncode

// 015 importiere React von „react“ unter Verwendung von Slots;
importiere ReactDOM von „react-dom“;
// Übergeordnete Komponentenklasse ParentDom erweitert React.Component {
    Konstruktor(Requisiten) {
        super(Requisiten)
        dieser.Zustand = {
            heardData: "Headerdaten",
            footData: "Bodendaten",
            contentData: "Inhaltsdaten"
        }
    }
    componentDidMount() {
    }

    rendern() {
        zurückkehren (
            <div>
                <h1>015Slots verwenden</h1>
                <Kinderdom>
                    <div data-position="heard" >Dies ist die Kopfzeile</div>
                    <div data-position="content" >Dies ist der Inhalt丨{this.state.contentData}</div>
                    <div data-position="foot" >Das ist die Unterseite</div>
                </ChildDom>
            </div>
        )
    }
}
// Untergeordnete Komponentenklasse ChildDom erweitert React.Component {        
    Konstruktor(Requisiten) {
        super(Requisiten)  
    }
    rendern() {
        lass gehört werden, Inhalt, Fuß;
        diese.Requisiten.Kinder.fürJedes(Element =>{
            wenn(item.props['data-position'] == 'gehört'){
                gehört = Artikel
            }sonst wenn(item.props['data-position'] == 'content'){
                Inhalt = Artikel
            }sonst wenn(item.props['data-position'] == 'foot'){
                Fuß = Artikel
            }
        })  
        zurückkehren (
            <div >
                <p>Ich bin eine Unterkomponente</p>
               <div Klassenname="gehört">
                   {gehört}
               </div>
               <div Klassenname="Inhalt">
                   {Inhalt}
               </div>
               <div Klassenname="Fuß">
                   {Fuß}
               </div>
            </div>
        )
    }
}

Standardfunktion exportieren () {
    ReactDOM.render(
        <ParentDom />,
        document.querySelector("#beispiel15")
    );
}

Anzeigeeffekt

Zwei Möglichkeiten zum Implementieren von Slots in React

Da der in der React-Komponente geschriebene Inhalt in Props gemountet wird, kann dies verwendet werden, um eine Slot-Funktion ähnlich der in Vue zu implementieren.

Dies ist der äußerste Code

importiere React, {Komponente} von 'react'
NavBar aus „./NavBar“ importieren
importiere NavBar2 aus './NavBar2'

exportiere Standardklasse App erweitert Komponente {
  rendern() {
    zurückkehren (
      <div>
        <Navigationsleiste>
          <span>aaa</span>
          <strong>bbb</strong>
          <a href="/#" rel="externes Nofollow" rel="externes Nofollow" >ccc</a>
        </NavBar>

        <NavBar2 linker Steckplatz={<span>aaa</span>}
        Mittelschlitz={<strong>bbb</strong>}
        Rechteslot={<a href="/#" rel="external nofollow" rel="external nofollow" >ccc</a>}/>
      </div>
    )
  }
}

1. Verwenden Sie this.props.children[index]

importiere React, {Komponente} von 'react'

importiere './style.css'
exportiere Standardklasse NavBar erweitert Komponente {
  rendern () {
    zurückkehren (
      <div Klassenname="Navigationsleiste">
        <div Klassenname="nav-links">
          {diese.props.children[0]}
        </div>
        <div Klassenname="Navigationszentrum">
          {diese.props.children[1]}
        </div>
        <div Klassenname="nav-rechts">
          {this.props.children[2]}
        </div>
      </div>
    )
  }
}

2. Verwenden Sie direkte Benennung

importiere React, {Komponente} von 'react'

importiere './style.css'
exportiere Standardklasse NavBar erweitert Komponente {
  rendern () {
    const {leftslot, centerslot,rightslot} = this.props
    zurückkehren (
      <div Klassenname="Navigationsleiste">
        <div Klassenname="nav-links">
          {linker Slot}
        </div>
        <div Klassenname="Navigationszentrum">
          {Mittelschlitz}
        </div>
        <div Klassenname="nav-rechts">
          {Rechtslot}
        </div>
      </div>
    )
  }
}

Dies ist das Ende dieses Artikels zur Verwendung von React-Slots. Weitere relevante Inhalte zu React-Slots finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Verwenden Sie den Reaktionskontext, um die Vue-Slot-Funktion zu implementieren
  • React implementiert eine Projektpraxis ähnlich den Slots in Vue

<<:  So verbergen und entfernen Sie Bildlaufleisten in HTML

>>:  So erzielen Sie mit CSS einen Daten-Hotspot-Effekt

Artikel empfehlen

Der Unterschied zwischen br und br/ in HTML

Antwort von Stackflow: Einfaches <br> genügt...

Die CSS-Priorität der Webseite wird für Sie ausführlich erklärt

Bevor wir über die CSS-Priorität sprechen, müssen...

Analysieren Sie das Arbeitsprinzip von Tomcat

SpringBoot ist wie eine riesige Python, die sich ...

Grundlegende Befehle für MySQL-Datenbankoperationen

1. Erstellen Sie eine Datenbank: Daten erstellen ...

Beispiele für die Verwendung von „Provide“ und „Inject“ in Vue2.0/3.0

Inhaltsverzeichnis 1. Was ist der Nutzen von Prov...

Docker-Pull-Image und Tag-Vorgang Pull | Tag

Ich habe den Quellcode des Fabric-Projekts noch e...

Ein Artikel zum Verständnis von Linux-Festplatten und Festplattenpartitionen

Vorwort Alle Hardwaregeräte im Linux-System werde...

Detaillierte Erläuterung der Javascript-Wissenspunkte

Inhaltsverzeichnis 1. Grundlegende Einführung in ...

img usemap Attribut China Karte Link

HTML-img-Tag: definiert ein Bild, das in eine Webs...

Mysql praktische Übungen einfaches Bibliotheksverwaltungssystem

Inhaltsverzeichnis 1. Sortierfunktion 2. Vorberei...