Heim >Web-Frontend >js-Tutorial >vue+slot verteilt Inhalte

vue+slot verteilt Inhalte

php中世界最好的语言
php中世界最好的语言Original
2018-06-09 11:42:131668Durchsuche

Dieses Mal werde ich Ihnen den Inhalt der Vue+Slot-Verteilung vorstellen. Was sind die Vorsichtsmaßnahmen für den Inhalt der Vue+Slot-Verteilung? Hier ist ein praktischer Fall.

1. Was ist Slot

Bei der Verwendung von Komponenten müssen wir diese oft so kombinieren:

<app>
 <app-header></app-header>
 <app-footer></app-footer>
</app>

Wann Wenn Sie Komponenten in Kombination verwenden und den Inhalt der übergeordneten Komponente und die Vorlage der untergeordneten Komponente mischen müssen, werden Slots verwendet. Dieser Vorgang wird als Inhaltsverteilung (Transklusion) bezeichnet.

Beachten Sie zwei Punkte:

1. Die <-Komponente weiß nicht, was ihr Mountpunkt enthalten wird. Der Inhalt des Mount-Punkts wird durch die übergeordnete Komponente von bestimmt.

2. Die -Komponente wird höchstwahrscheinlich eine eigene Vorlage haben.

Requisiten, die Daten weitergeben, Ereignisse, die Ereignisse auslösen, und die Verteilung von Slot-Inhalten bilden die drei API-Quellen der Vue-Komponenten. Unabhängig davon, wie komplex die Komponente ist, besteht sie auch aus diesen drei Teilen.

2. Geltungsbereich

<child-component>
 {{ message }}
</child-component>

Die Nachricht hier ist ein Slot, aber sie ist an die Daten der übergeordneten Komponente gebunden, nicht an die Komponente Die Daten von .

Der Inhalt der übergeordneten Komponentenvorlage wird im übergeordneten Komponentenbereich kompiliert, und der Inhalt der untergeordneten Komponentenvorlage wird im untergeordneten Komponentenbereich kompiliert. Zum Beispiel:

   <p id="app15">
      <child-component v-show="showChild"></child-component>
    </p>
Vue.component('child-component',{
  template: '<p>子组件</p>'
});
var app15 = new Vue({
  el: '#app15',
  data: {
    showChild: true
  }
});

Der Status showChild ist hier an die Daten der übergeordneten Komponente gebunden. Wenn Sie ihn an die untergeordnete Komponente binden möchten, sollte er lauten:

    <p id="app15">
      <child-component></child-component>
    </p>
Vue.component('child-component',{
  template: '<p v-show="showChild">子组件</p>',
  data: function(){
    return {
      showChild: true
    }
  }
});

Daher der Inhalt Nach Slot verteilt hat die Funktion Die Domäne befindet sich auf der übergeordneten Komponente.

3. Slot-Nutzung

3.1 Ein einzelner Slot

Verwenden Sie spezielle Slots in Sub- Komponenten Das -Element kann einen Slot für diese Unterkomponente öffnen. In der übergeordneten Komponentenvorlage ersetzt der gesamte in das Unterkomponenten-Tag eingefügte Inhalt das -Tag. Das Rendering-Ergebnis von

 <p id="app16">
      <my-component16>
        <p>分发的内容</p>
        <p>更多分发的内容</p>
      </my-component16>
    </p>
Vue.component('my-component16',{
  template: '<p>' +
        '<slot><p>如果父组件没有插入内容,我将作为默认出现<</p></slot>' +    //预留的slot插槽
       '</p>'
});
var app16 = new Vue({
  el: '#app16'
});

ist:

<p id=”app16”>
  <p>
    <p>分发的内容<p>
    <p>更多分发的内容<p>
  </p>
</p>

Ein -Element ist in der Vorlage der untergeordneten Komponente child-component definiert und ein

wird als Standardinhalt verwendet. der nicht im übergeordneten Komponentenslot verwendet wird, wird dieser Standardtext gerendert; wenn Slot geschrieben wird, wird der gesamte ersetzt.

3.2 Benannter Slot

Nachdem dem -Element ein Name zugewiesen wurde, können mehrere Inhalte verteilt werden und der benannte Slot kann mit einem einzelnen Slot koexistieren. Das Rendering-Ergebnis von

  <p id="app17">
      <my-component17>
        <h3 slot="header">标题</h3>
        <p>正文内容</p>
        <p>更多正文内容</p>
        <h3 slot="footer">底部信息</h3>
      </my-component17>
    </p>
Vue.component('my-component17',{
  template: '<p class="container">' +
         '<p class="header">' +
          '<slot name="header"></slot>' +
         '</p>' +
         '<p class="main">' +
          '<slot></slot>' +
         '</p>'+
         '<p class="footer">' +
          '<slot name="footer"></slot>' +
         '</p>'+
       '</p>'
});
var app17 = new Vue({
  el: '#app17'
});

lautet:

 <p id="app17">
        <p class="container">
          <p class="header">
            <h3>标题</h3></p>
          <p class="main"> 
            <p>正文内容</p> 
            <p>更多正文内容</p> 
          </p>
          <p class="footer">
            <h3>底部信息</h3>
          </p>
        </p>
      </p>

3 -Elemente werden in der Unterkomponente deklariert, von denen das in

Wenn der standardmäßige anonyme Slot nicht angegeben ist, ist er redundant Inhaltsfragmente in der übergeordneten Komponente werden verworfen.

4. Scope-Slot

Scope-Slot ist ein spezieller Slot, der eine wiederverwendbare Vorlage verwendet Ersetzen Sie es.

Sehen Sie sich ein Beispiel an:  

 <p id="app18">
      <my-component18>
        <template scope="props">
          <p>来自父组件的内容</p>
          <p>{{props.msg}}</p>
        </template>
      </my-component18>
    </p>
Vue.component('my-component18',{
  template: '<p class="container"><slot msg="来自子组件的内容"></slot></p>'
});
var app18 = new Vue({
  el: '#app18'
});

Beobachten Sie die Vorlage der Unterkomponente, es gibt eine requisitenähnliche Schreibmethode zum Übergeben von Daten an die Komponente < ;slot> msg="xxx", Die Daten werden an den Slot übergeben. Die übergeordnete Komponente

verwendet das Attribut scope=”props ” Wie das Element in v-for= ” item in items . Vorlage Auf die Datennachricht aus dem Unterkomponenten-Slot kann über die temporären Variablenprops zugegriffen werden.

Werfen wir einen Blick auf die Verwendung von Slot in Vue Komponente

Hauptsächlich, um die Komponente skalierbarer zu machen

1. Anonymen Slot verwenden

2 . Fügen Sie dem Slot einen Namen hinzu

Wenn Sie der Komponente mit Slot keine Tags hinzufügen, wird im Slot nichts angezeigt

.

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!

Empfohlene Lektüre:

Vue2.0+Boostrap im Fall verwenden

Knoten+Token zur Benutzerüberprüfung

Das obige ist der detaillierte Inhalt vonvue+slot verteilt Inhalte. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn