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

Verwendung der Zabbix-API in einer Linux-Shell-Umgebung

Sie können es direkt in der Linux-Shell-Umgebung ...

Lösungen für ungültige Nullsegmentbeurteilungen und IFNULL()-Fehler in MySql

MySql Nullfeldbeurteilung und IFNULL-Fehlerverarb...

Zabbix überwacht den Prozess der Linux-Systemdienste

Zabbix erkennt automatisch Regeln zur Überwachung...

So installieren Sie Oracle Java 14 auf Ubuntu Linux

Vor Kurzem hat Oracle die öffentliche Verfügbarke...

Erstellen Sie eine Bildschirmaufzeichnungsfunktion mit JS

OBS studio ist cool, aber JavaScript ist cooler. ...

JS realisiert die automatische Wiedergabe der Timeline

Vor kurzem habe ich einen solchen Effekt implemen...

JavaScript CSS3 zur Implementierung einer einfachen Video-Sperrfunktion

In diesem Artikel wird versucht, eine Demo zur Si...

Verwendung des Linux-Befehls sed

1. Funktionseinführung sed (Stream EDitor) ist ei...

So starten Sie eine Transaktion in MySQL

Vorwort In diesem Artikel wird hauptsächlich besc...