Vue verwendet dynamische Komponenten, um einen TAB-Umschalteffekt zu erzielen

Vue verwendet dynamische Komponenten, um einen TAB-Umschalteffekt zu erzielen

Problembeschreibung

Tab-Switching-Szenarien werden häufig in der Entwicklung verwendet. Wenn wir diesen Effekt erzielen müssen, denken wir oft über die folgende Möglichkeit nach, diesen Effekt zu erzielen.

  • Methode 1: Verwenden Sie display:none;, um die Anzeige und das Ausblenden von DOM-Elementen zu steuern. Dadurch wird das Ein- und Ausblenden von zwei Tabs realisiert. Wenn allerdings zwischen drei oder vier Registerkarten gewechselt werden muss, ist diese Methode nicht ratsam.
  • Methode 2 wird mithilfe der Direktive v-if oder v-show in Vue implementiert. Diese Methode kann implementiert werden, aber der Code ist nicht elegant. Stellen Sie sich vor, was passieren würde, wenn eine Reihe von v-if in einer VUE-Datei enthalten wäre? Und wenn Sie v-if verwenden, müssen Sie zur Identifizierung viele Variablen deklarieren. Es ist also keine sehr gute Lösung
  • Methode 3: Verwenden Sie die Tab-Umschaltkomponente in ElementUI oder iView. Diese Methode ist auch in Ordnung, erfordert aber manchmal eine /tiefe/ Änderung des Stils, was etwas mühsam ist.

Der Autor ist der Ansicht, dass es bequemer wäre, die dynamischen Komponenten von Vue zu verwenden, um den Tab-Umschalteffekt zu erzielen.

Was ist die dynamische Komponente von Vue?

Die dynamische Komponente von Vue ist im Wesentlichen immer noch eine Komponente. Einfach ausgedrückt ist eine Komponente eine UI-Ansichtsebene mit JS-Logik. Die sogenannte dynamische Komponente bedeutet, dass wir die spezifische Komponente, die an einer bestimmten Stelle auf der Seite angezeigt wird, unter bestimmten Bedingungen dynamisch steuern können. Das klingt ein bisschen wie das Wechseln von Registerkarten.

Beschreibung des Anwendungsszenarios

Nachfrage-Effekt-Diagramm

Tatsächlich ist es ganz einfach, es ist nur der Effekt des Wechselns der Registerkarten. Natürlich kann der Stileffekt der Registerkarte bei der tatsächlichen Entwicklung etwas komplizierter sein.

Implementierungsschritte

Schritt 1 (neue Komponente erstellen und Registrierung einführen)

Definieren Sie zunächst vier .vue-Dateien im Komponentenordner als den durch den Tab-Wechsel angezeigten Inhaltsteil, und Sie können sie verwenden, indem Sie sie importieren.

Neu

Importieren und registrieren

importiere eines aus "./components/one";
importiere zwei aus "./components/two";
importiere drei aus "./components/three";
importiere vier aus "./components/four";

Komponenten:
    eins,
    zwei,
    drei,
    vier,
  },

Schritt 2 (Layout, platzieren Sie die Beschriftung für den Tab-Klick oben und platzieren Sie die Komponente darunter, um den entsprechenden Inhalt anzuzeigen)

<Vorlage>
  <div id="app">
    <div Klasse="oben">
     <!-- Platzieren Sie die Registerkarte mit der Klickbeschriftung-->
    </div>
    <div Klasse="unten">
      <!-- Platzieren Sie dynamische Komponenten, um entsprechenden Inhalt darzustellen-->
    </div>
  </div>
</Vorlage>

Schritt 3 (Schreiben Sie die Registerkarte oben und klicken Sie auf das Etikett)

// Zuerst definieren wir das Array cardArr in data, um die Daten des angeklickten Tabs zu speichern data() {
        zurückkehren {
          welcherIndex: 0,
          KarteArr: [
            {
              Komponentenname: "Dynamische Komponente 1",
            },
            {
              Komponentenname: "Dynamische Komponente 2",
            },
            {
              Komponentenname: „Dynamische Komponente Drei“,
            },
            {
              Komponentenname: „Dynamische Komponente Vier“,
            },
          ],
        };
      },
//Verwenden Sie dann eine v-for-Schleife, um <template> darzustellen
      <div id="app">
        <div Klasse="oben">
          <div
            Klasse = "crad"
            :Klasse="{ Highlight: welcherIndex == Index }"
            v-for="(Element, Index) in Kartenarr"
            :Schlüssel="Index"
            @click="welcherIndex = Index"
          >
            {{ item.componentName }}
          </div>
        </div>
        <div Klasse="unten">
          <!-- Dynamische Komponenten platzieren... -->
        </div>
      </div>
    </Vorlage>
// Da wir einen hervorgehobenen Zustand benötigen, setzen wir zunächst den Index 0 als erstes Hervorgehobenes und verwenden whichIndex und :class, die in data definiert sind, um dies zu erreichen // Hervorhebung style.highLight {
      Kastenschatten: 0 15px 30px rgba (0, 0, 0, 0,2);
      transformieren: übersetzen3d(0, -1px, 0);
    }

Schritt 4 (Dynamisches Komponenten-Tag <component/> verwenden)

    // Das dynamische Komponenten-Tag <component/> hat ein is-Attribut. Der Wert von is bestimmt den Wert der Komponente.
    // Hier verwenden wir eine variable Komponenten-ID zum Speichern und zeigen die Komponenten-ID als <div class="bottom"> an.
        <Komponente: ist = "Komponenten-ID"></Komponente>
    </div>
    
    // Standardmäßig zeigen wir zuerst das Erste an. Gleichzeitig müssen wir dafür sorgen, dass der Komponentenname und die Komponenten-ID in der Kartenliste einander entsprechen.
    // Die Daten sollten also folgendermaßen geändert werden: data() {
        zurückkehren {
          welcherIndex: 0,
          componentId: "one", // Der Wert ist der Name der importierten Komponente, die wir im Komponentenobjekt cardArr registriert haben: [
            {
              Komponentenname: "Dynamische Komponente 1",
              componentId: "eins", // entspricht},
            {
              Komponentenname: "Dynamische Komponente 2",
              componentId: "zwei", // entspricht},
            {
              Komponentenname: „Dynamische Komponente Drei“,
              componentId: "drei", // um damit zu entsprechen},
            {
              Komponentenname: „Dynamische Komponente Vier“,
              componentId: "vier", // um damit zu entsprechen},
          ],
        };
      },

Schritt 5 (Klicken Sie auf eine Registerkartenkomponente, um den entsprechenden Komponenten-ID-Wert dynamisch zu ändern)

<Vorlage>
  <div id="app">
    <div Klasse="oben">
      <div
        Klasse = "crad"
        :Klasse="{ Highlight: welcherIndex == Index }"
        v-for="(Element, Index) in Kartenarr"
        :Schlüssel="Index"
        @klick="
          welcherIndex = Index;
          Komponenten-ID = Artikel.Komponenten-ID; 
        "
      >
          <!-- @click Sie können mehrere Operationscodes in das Tag schreiben, getrennt durch Semikolon -->
        {{ item.componentName }}
      </div>
    </div>
    <div Klasse="unten">
    <!-- Cache-Komponenten am Leben erhalten, damit die Komponenten nicht zerstört werden und das DOM nicht erneut gerendert wird.
    Der Browser führt keine Neuanordnung und Neudarstellung durch, sodass die Leistung optimiert werden kann. Wenn Sie es nicht verwenden, wird die Seite langsamer geladen.
      <am Leben erhalten>
        <Komponente: ist = "Komponenten-ID"></Komponente>
      </am Leben erhalten>
    </div>
  </div>
</Vorlage>

Der komplette Code ist beigefügt

<Vorlage>
  <div id="app">
    <div Klasse="oben">
      <div
        Klasse = "crad"
        :Klasse="{ Highlight: welcherIndex == Index }"
        v-for="(Element, Index) in Kartenarr"
        :Schlüssel="Index"
        @klick="
          welcherIndex = Index;
          Komponenten-ID = Artikel.Komponenten-ID;
        "
      >
        {{ item.componentName }}
      </div>
    </div>
    <div Klasse="unten">
      <am Leben erhalten>
        <Komponente: ist = "Komponenten-ID"></Komponente>
      </am Leben erhalten>
    </div>
  </div>
</Vorlage>

<Skript>
importiere eines aus "./components/one";
importiere zwei aus "./components/two";
importiere drei aus "./components/three";
importiere vier aus "./components/four";
Standard exportieren {
  Komponenten:
    eins,
    zwei,
    drei,
    vier,
  },
  Daten() {
    zurückkehren {
      welcherIndex: 0,
      Komponenten-ID: "eins",
      KarteArr: [
        {
          Komponentenname: "Dynamische Komponente 1",
          Komponenten-ID: "eins",
        },
        {
          Komponentenname: "Dynamische Komponente 2",
          Komponenten-ID: "zwei",
        },
        {
          Komponentenname: „Dynamische Komponente Drei“,
          Komponenten-ID: "drei",
        },
        {
          Komponentenname: „Dynamische Komponente Vier“,
          Komponenten-ID: "vier",
        },
      ],
    };
  },
};
</Skript>

<style lang="less" scoped>
#app {
  Breite: 100 %;
  Höhe: 100vh;
  Box-Größe: Rahmenbox;
  Polsterung: 50px;
  .Spitze {
    Breite: 100 %;
    Höhe: 80px;
    Anzeige: Flex;
    Inhalt ausrichten: Abstand herum;
    .crad {
      Breite: 20 %;
      Höhe: 80px;
      Zeilenhöhe: 80px;
      Textausrichtung: zentriert;
      Hintergrundfarbe: #fff;
      Rand: 1px durchgezogen #e9e9e9;
    }
    .highLight {
      Kastenschatten: 0 15px 30px rgba (0, 0, 0, 0,2);
      transformieren: übersetzen3d(0, -1px, 0);
    }
  }
  .unten {
    Rand oben: 20px;
    Breite: 100 %;
    Höhe: berechnet (100 % – 100 Pixel);
    Rand: 3px durchgehend rosa;
    Anzeige: Flex;
    Inhalt ausrichten: zentriert;
    Elemente ausrichten: zentrieren;
  }
}
</Stil>

Oben sind die Details, wie Vue dynamische Komponenten verwendet, um TAB-Umschalteffekte zu erzielen. Weitere Informationen dazu, wie Vue dynamische Komponenten verwendet, um TAB-Umschalteffekte zu erzielen, finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Dynamische Vue-Komponente zum Erzielen eines Tab-Umschalteffekts
  • Verwenden dynamischer Komponenten zum Erzielen eines Tab-Umschalteffekts in Vue
  • Vue implementiert den Seitenwechsel-Schiebeeffekt
  • So erzielen Sie einen dynamischen Effekt zum Umschalten ausgewählter Zustände in Vue

<<:  Lösung zum Vergessen des Administratorkennworts der MySQL-Datenbank

>>:  Implementierung von Socket-Optionen in der Linux-Netzwerkprogrammierung

Artikel empfehlen

So verwenden Sie benutzerdefinierte CSS-Variablen in Vue

Inhaltsverzeichnis Die benutzerdefinierte CSS-Var...

Tutorial zur Installation von MySQL 5.7.18 auf Mac OS 10.12

Ich habe das ganze Internet durchsucht und bin au...

Implementierung einer benutzerdefinierten Vue-Vorlage von vscode

Verwenden Sie den Vscode-Editor, um eine Vue-Vorl...

Verwendung von MySQL-Triggern

Trigger können dazu führen, dass vor oder nach de...

Detaillierte Erklärung des Overlay-Netzwerks in Docker

Übersetzt aus der offiziellen Docker-Dokumentatio...

So verwenden Sie video.js in Vue zum Abspielen von Videos im M3U8-Format

Inhaltsverzeichnis 1. Installation 2. Einführung ...

js zur Realisierung der automatischen Sperrbildschirmfunktion

1. Anwendungsszenarien Es gibt eine solche Anford...

Installieren des Ping-Tools in einem von Docker erstellten Container

Denn die von Docker abgerufenen Basisimages wie C...

MySQL-Reihe: Datenbankdesign, drei Paradigmen, Tutorial-Beispiele

Inhaltsverzeichnis 1. Wissensbeschreibung der dre...

Zusammenfassung zur Verwendung der Bootstrap-Tabelle

In diesem Artikel erfahren Sie, wie Sie die Boots...