React realisiert sekundäre Verknüpfung (linke und rechte Verknüpfung)

React realisiert sekundäre Verknüpfung (linke und rechte Verknüpfung)

In diesem Artikel wird der spezifische Code von React zur Erzielung einer sekundären Verknüpfung zu Ihrer Information veröffentlicht. Der spezifische Inhalt ist wie folgt

JS-Code

importiere { Komponente } von 'react'
importiere './linkage.less'

Klasse Linkage erweitert Komponente {
    Konstruktor(...args) {
        super(...args)

        // Linke Seite hinzufügen this.FnButtonList = []
        //Rechte Seite hinzufügen this.FnContentList = []
        //Schalter this.ScrollBys = true
        // Direkt im Konstruktor ausführen --> React wird nur gerendert, wenn es aktualisiert wird --> componentDidMount löst den Erwerb von this.init() aus

    }
    init() {
        dies.FnSetButton(20)
        // Rendern rechts this.FnSetContent(20)
        dieser.Zustand = {
            ButtonList: diese.FnButtonList,
            Inhaltsliste: this.FnContentList,
            //Index ButtonListIndex: 0,
        }


    }
    componentDidMount() {
        dies.JedeHeight = dies.refs['linkage-button-list'].children[0].offsetHeight
    }
    // Zufallszahl FnSetRandom(m, n) {
        gibt parseInt zurück (Math.random() * (m - n) + n);
    }
    // Rendere den Button auf der linken Seite FnSetButton(n) {
        für (var i = 0; i < n; i++) {
            dies.FnButtonList.push({
                ID: `button${i}`,
                Text: `Button${i}`
            })
        }
    }

    // Den richtigen Inhalt rendern FnSetContent(n) {
        let ContTop = 0; //Der Abstand zwischen dem ersten Element und dem oberen Rand der Seite let Random = this.FnSetRandom(750, 1400)
        für (sei i = 0; i < n; i++) {
            dies.FnContentList.push({
                Höhe: Zufällig,
                ID: `content${i}`,
                Text: `content${i}`,
                oben: ContTop,
            });
            ContTop += Zufällig;
        }
    }

    Fncurrn(index) {
        wenn (Index > 3) {
            this.refs["Linkage-Button"].scrollTop = (Index - 3) * this.EveryHeight;

        }
        wenn (Index <= 3) {
            this.refs["Verknüpfungsschaltfläche"].scrollTop = 0;
        }
    }
    // Klicken Sie auf FnButtonTab(index) {
        this.ScrollBys = falsch
        dies.setState({
            ButtonListIndex: Index
        })
        diese.refs["linkage-content"].scrollTop = diese.state.ContentList[index].top;

        //Klicken, um dies zu zentrieren.Fncurrn(index)
    }

    //Nach rechts und nach links scrollen FnScroll(ev) {
        dies.ContTop = ev.target.scrollTop
        wenn (dieses.ScrollBys) {
            sei n = 0

            für (lass i = 0; i < this.state.ContentList.length; i++) {
                Wenn (
                    this.refs["linkage-content"].scrollTop >= this.state.ContentList[i].top
                ) {
                    //Wenn die Scroll-Distanz der Box größer ist als die Distanz zwischen dem Element in der rechten Box und dem oberen Seitenrand n = i;
                }
            }
            dies.setState({
                ButtonListIndex: n
            })

            wenn (Math.abs(n - dieser.Zustand.ButtonListIndex) === 1) {

                dies.setState({
                    ButtonListIndex: n
                })
                //Zur Mitte scrollen this.Fncurrn(n)

            }
        }


        wenn (dieser.ContTop == dieser.Zustand.ContentList[dieser.Zustand.ButtonListIndex].top) {
            this.ScrollBys = wahr
        }

    }

    rendern() {
        zurückkehren (
            <div Klassenname = "Verknüpfung">
                <div Klassenname = "Verknüpfungsschaltfläche" ref = "Verknüpfungsschaltfläche">
                    <div Klassenname = "Verknüpfungsschaltflächenliste" ref = "Verknüpfungsschaltflächenliste">
                        {this.state.ButtonList.map((item, index) => <div
                            Schlüssel={item.id}
                            Klassenname = {this.state.ButtonListIndex == Index? 'Verknüpfungsschaltflächenelement ac': 'Verknüpfungsschaltflächenelement'}
                            beim Klicken = {diese.FnButtonTab.bind(diese, index)}
                        >
                            {item.text}
                        </div>)}
                    </div>
                </div>
                <div className="Verknüpfungsinhalt" ref="Verknüpfungsinhalt" onScroll={this.FnScroll.bind(this)}>
                    <div Klassenname = "Link-Inhaltsliste" >
                        {this.state.ContentList.map((item) => <div
                            Klassenname = "Link-Inhaltselement"
                            Schlüssel={item.id}
                            Stil={{ Höhe: Artikelhöhe + 'px' }}
                        >
                            <div className="linkage-content-title"> {item.text}</div>
                        </div>)}
                    </div>
                </div>
            </div>
        )
    }
}
Standardverknüpfung exportieren

CSS-Datei

Körper {
    Rand: 0;
  }
  .Verknüpfung {
    Breite: 100vw;
    Höhe: 100vh;
    Anzeige: Flex;
    .Verknüpfungsschaltfläche {
      Breite: 20vw;
      Höhe: 100vh;
      Hintergrund: Schokolade;
      Textausrichtung: zentriert;
      Schriftgröße: 40px;
      Farbe: #fff;
      Überlauf: scrollen;
      Scroll-Verhalten: glatt;
      .linkage-button-list {
        Breite: 20vw;
        .linkage-button-item.ac {
          Hintergrund: hellblau;
        }
        .linkage-button-item {
          Breite: 20vw;
          Höhe: 10vh;
          Zeilenhöhe: 10vh;
        }
      }
    }
    .linkage-content {
      Breite: 80vw;
      Höhe: 100vh;
      Scroll-Verhalten: glatt;
      Überlauf: scrollen;
      .linkage-content-list {
        .linkage-content-item {
          Breite: 80vw;
          Höhe: 100vh;
          .linkage-content-title {
            Höhe: 6vh;
            Zeilenhöhe: 6vh;
            Breite: 80vw;
            Textausrichtung: zentriert;
            Hintergrund: Chartreuse;
            Farbe: #fff;
            Schriftgröße: 30px;
          }
        }
      }
    }
  }
  .linkage-button::-webkit-scrollbar {
    Anzeige: keine; /* Chrome Safari */
  }
  .linkage-content::-webkit-scrollbar {
    Anzeige: keine; /* Chrome Safari */
  }

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Reacts Methode zur Realisierung einer sekundären Verknüpfung
  • React realisiert sekundären Verknüpfungseffekt (Treppeneffekt)
  • React + ts realisiert den sekundären Verknüpfungseffekt

<<:  So verwenden Sie Gitlab-ci zur kontinuierlichen Bereitstellung auf Remotecomputern (ausführliches Tutorial)

>>:  Beheben Sie das Problem, dass die MySQL-Datenbank unerwartet abstürzt, wodurch die Tabellendatendatei beschädigt wird und nicht gestartet werden kann

Artikel empfehlen

XHTML-Tutorial: XHTML-Grundlagen für Anfänger

<br />Der Inhalt dieser Site ist Original. B...

Installation und Verwendung von Apache-Stresstest-Tools

1. Herunterladen Gehen Sie zur offiziellen Apache...

Webdesign-Tipps: Einfache Regeln für das Seitenlayout

Wiederholung: Wiederholen Sie bestimmte Seitendes...

So erstellen Sie geplante Aufgaben mit dem Crond-Tool in Linux

Vorwort Crond ist ein Tool zur geplanten Ausführu...

Einführung in das MySQL Connection Control Plugin

Inhaltsverzeichnis 1. Einführung in das Verbindun...

Warum MySQL-Datenbanken NULL so weit wie möglich vermeiden

Viele Tabellen in MySQL enthalten Spalten, die NU...

Schritte zur Installation von Pyenv unter Deepin

Vorwort In der Vergangenheit habe ich die Python-...

Mehr als 100 Zeilen Code zur Implementierung von React Drag Hooks

Vorwort Der Quellcode umfasst insgesamt nur mehr ...

Die Kombination und der Unterschied zwischen ENTRYPOINT und CMD im Dockerfile

Im vorherigen Artikel [Detaillierte Erläuterung v...

Detaillierte Erklärung des daily_routine Beispielcodes in Linux

Schauen Sie sich zunächst den Beispielcode an: #/...