Detaillierte Erklärung zur Verwendung der Vue.js-Renderfunktion

Detaillierte Erklärung zur Verwendung der Vue.js-Renderfunktion

Vue empfiehlt in den meisten Fällen die Verwendung von Vorlagen zum Erstellen Ihres HTML. In manchen Szenarien benötigen Sie jedoch wirklich die volle Programmierleistung von JavaScript, nämlich die Renderfunktion, die eher einem Compiler als einer Vorlage ähnelt.

Auf HTML-Ebene haben wir beschlossen, die Komponentenschnittstelle wie folgt zu definieren: Generieren Sie h1-h6-Tags, indem Sie verschiedene Ebenen 1-6 übergeben, und verwenden Sie Slots, um Inhalte zu generieren

<div id="div1">
    <child :level="1">Hallo Welt!</child>
</div>

<script Typ="text/x-template" id="child-template">
  <h1 v-if="Ebene === 1">
    <Steckplatz></Steckplatz>
  </h1>
  <h2 v-if="Ebene === 2">
    <Steckplatz></Steckplatz>
  </h2>
  <h3 v-if="Ebene === 3">
    <Steckplatz></Steckplatz>
  </h3>
  <h4 v-if="Ebene === 4">
    <Steckplatz></Steckplatz>
  </h4>
  <h5 v-if="Ebene === 5">
    <Steckplatz></Steckplatz>
  </h5>
  <h6 v-if="Ebene === 6">
    <Steckplatz></Steckplatz>
  </h6>
</Skript>

<Skripttyp="text/javascript">
    /**
     * Registrieren Sie die untergeordnete Komponente global. Beachten Sie, dass, wenn der Vorlagenwert mit # beginnt, dieser als Optionssymbol verwendet wird und das innerHTML des übereinstimmenden Elements als Vorlage verwendet wird. Ein gängiger Trick besteht darin, <script type="x-template"> zu verwenden, um die Vorlage einzubinden. Der Vorteil dabei ist, dass das HTML den Inhalt darin nicht rendert* 
     * Die Verwendung einer Vorlage ist hier nicht die beste Wahl:
     * 1. Der Code ist lang. * 2. Das Einfügen von Inhalten in verschiedene Titel erfordert die wiederholte Verwendung von Slots. 
     * 3. Da Komponenten ein Stammelement haben müssen, werden Titel und Inhalt in ein nutzloses div eingeschlossen, z. B. <div><h1>Hallo Welt</h1></div>
     */

    Vue.Komponente('Kind', {
      Vorlage: '#child-template',
      Requisiten: {
        Ebene:
          Typ: Nummer,
          erforderlich: true
        }
      },
      Daten: Funktion() {
        zurückkehren {
          ein: 1
        }
      }
    })

    neuer Vue({
        el:"#div1"
    })
  </Skript>

Wir versuchen, das obige Beispiel mithilfe der Renderfunktion umzusetzen. Beachten Sie, dass bei Verwendung der Renderfunktion die Vorlagenoption ignoriert wird.

createElement erhält 3 Parameter:

Der erste Parameter kann der Name eines HTML-Tags, einer Komponente oder einer Funktion sein. Dieser Parameter ist erforderlich.
Das zweite ist das Datenobjekt {Object} (optional);

Hier ist ein Beispiel:

<div id="div1">
    <Kind :level="1">
        Hallo Welt!
    </child>
    <Kind: Ebene = "2">
        <!-- wird nicht angezeigt -->
        <span slot="footer">Dies ist der Footer-Slot</span>
        <p slot="header">das ist der Header-Slot</p>
    </child>
</div>


<Skript>
    Vue.Komponente('Kind', {
        rendern: Funktion (ErstelleElement) {
            Konsole.log(diese.$slots);
            returniere Element erstellen(
                'h' + diese.Ebene, // tagName Tagname {
                    // Für jedes h-Tag die Klasse festlegen
                    'Klasse': {
                        foo: wahr,
                        Balken: falsch
                    },
                    //Endlich als Inline-Style gerendert style: {
                        Farbe: 'rot',
                        Schriftgröße: '14px'
                    },
                    // Andere HTML-Attribute attrs: {
                        ID: "foo",
                        'Daten-ID': 'Balken'
                    },
                    // DOM-Attribute domProps: {
                        // innerHTML: 'von domProps',
                    },
                    // Ereignis-Listener basierend auf „on“
                    // Unterstützt daher keine Modifikatoren wie v-on:keyup.enter on: { mehr.
                        Klicken Sie auf: this.clickHandler
                    },
                    // ...
                },
                // Sie können den statischen Inhalt in der VNodes-Liste von this.$slots abrufen // $slots.default wird verwendet, um auf den unbenannten Slot der Komponente zuzugreifen
                // Wenn Sie einen benannten Slot benötigen, müssen Sie den Slot-Namen angeben: this.$slots.header
                // [this.$slots.default,this.$slots.footer,this.$slots.header] //Slots der Ebene 2 anzeigen [this.$slots.default] //Nur unbenannte Slots anzeigen
            )
        },
        Vorlage: '<div v-if="level===1"><slot></slot></div>', // wird ignoriert. Eigenschaften: {
            Ebene:
                Typ: Nummer,
                erforderlich: true
            }
        },
        Methoden: {
            clickHandler: Funktion () {
                console.log('KlickHandler')
            }
        }
    })

    neuer Vue({
        el: "#div1"
    })
</Skript>

Die Darstellung sieht wie folgt aus:

Geben Sie hier die Bildbeschreibung ein

Dies ist das Ende dieses Artikels über die detaillierte Verwendung der Renderfunktion von Vue.js. Weitere relevante Inhalte zur Renderfunktion von Vue.js finden Sie in den vorherigen Artikeln von 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:
  • Verwendung der VUE-Renderfunktion und ausführliche Erklärung
  • Codebeispiel für die Vue-Renderfunktion zum Erstellen eines DOM-Knotens
  • Vue-Renderfunktion, tatsächlicher Kampf zur Implementierung der Tabs-Tab-Komponente
  • Detaillierte Erläuterung der Verwendung der Renderfunktion in Vue
  • So verwenden Sie die Renderfunktion in Vue
  • Verstehen Sie die Verwendung der Renderfunktion von VUE
  • Warum die Implementierung der Renderfunktion in Vue einführen?

<<:  So erkennen Sie die Dateisystemintegrität basierend auf AIDE in Linux

>>:  Lösungen für MySQL OOM (Speicherüberlauf)

Artikel empfehlen

Detaillierte Erklärung der Abkürzung von State in React

Vorwort Was ist Staat Wir alle sagen, dass React ...

Zusammenfassung der unbekannten Verwendung von "!" in Linux

Vorwort Tatsächlich gibt es für das bescheidene „...

Mysql, einige komplexe SQL-Anweisungen (Abfragen und Löschen doppelter Zeilen)

1. Suchen Sie nach doppelten Zeilen Wählen Sie * ...

Beispielcode für HTML-Layout links und rechts

CSS: Code kopieren Der Code lautet wie folgt: html...

Detaillierte Erklärung zur Verwendung der Linux-lseek-Funktion

Hinweis: Wenn der Artikel Fehler enthält, hinterl...

So zeichnen Sie eine vertikale Linie zwischen zwei Div-Tags in HTML

Als ich kürzlich eine Schnittstelle zeichnete, st...

Detaillierte Erklärung der Rolle von Klammern in AngularJS

1. Die Rolle der Klammern 1.1 Eckige Klammern [ ]...

So steuern Sie den Anteil untergeordneter Flex-Elemente auf der Hauptachse

Hintergrund Durch das flexible Layout wird eine e...

Die Komponente vue-cropper realisiert das Zuschneiden und Hochladen von Bildern

In diesem Artikel wird der spezifische Code der V...

Tutorial zum Anmelden bei MySQL nach der Installation von Mysql 5.7.17

Die Installation von mysql-5.7.17 wird weiter unt...