Heim > Web-Frontend > js-Tutorial > Erweiterte Verwendung von Vue-Komponenten

Erweiterte Verwendung von Vue-Komponenten

php中世界最好的语言
Freigeben: 2018-05-25 14:06:04
Original
1923 Leute haben es durchsucht

Dieses Mal werde ich Ihnen die Vorsichtsmaßnahmen für die erweiterte und fortgeschrittene Verwendung von Vue-Komponenten vorstellen. Das Folgende ist ein praktischer Fall.

1. Rekursive Komponenten

Eine Komponente kann sich in ihrer Vorlage einfach selbst aufrufen.

Ein Beispiel lautet wie folgt:

  <p id="app19">
   <my-component19 :count="1"></my-component19>
  </p>
Vue.component('my-component19',{
 name: 'my-component19', //其实当你利用 Vue.component 全局注册了一个组件,全局的ID会被自动设置为组件的name。
 props: {
  count: {
   type: Number,
   default: 1
  }
 },
 template: '<p><my-component19 :count="count+1" v-if="count<3"></my-component19></p>'
});
var app19 = new Vue({
 el: '#app19'
});
Nach dem Login kopieren
Das Rendering-Ergebnis ist:

 <p id="app19">
  <p>
   <p>
    <p><!----></p>
   </p>
  </p>
 </p>
Nach dem Login kopieren
Nach dem Festlegen des Namens kann er rekursiv in der Komponentenvorlage verwendet werden. Dies sollte jedoch der Fall sein Beachten Sie, dass die Anzahl der Rekursionen unter einer Bedingung begrenzt werden muss. Andernfalls wird ein Fehler ausgegeben: Die maximale Stapelgröße wurde überschritten. Die rekursive Verwendung von

-Komponenten kann verwendet werden, um einige unabhängige Komponenten mit unbekannten hierarchischen Beziehungen zu entwickeln, wie z. B. kaskadierende Selektoren und baumförmige

-Steuerelemente usw.

2. Inline-Vorlage

Die Vorlage der Komponente wird im Allgemeinen in der Vorlagenoption definiert Wenn Sie eine Komponente verwenden, verwenden Sie das Inline-Template-Attribut für das Komponenten-Tag. Die Komponente behandelt ihren Inhalt dann als Vorlage, anstatt ihn als Inhalt zu verteilen, was die Vorlage flexibler macht.

Beispiele sind wie folgt:

<p id="app20">
   <my-component20 inline-template>
    <p>
     <h3>在父组件中定义子组件的模板</h3>
     <p>{{msg}}</p>
    </p>
   </my-component20>
  </p>
Vue.component('my-component20',{
 data: function(){
  return {
   msg: '在子组件声明的数据'
  }
 }
});
var app20 = new Vue({
 el: '#app20'
});
Nach dem Login kopieren

3. Dynamische Komponenten

Vue.js bietet ein spezielles Element <component> Wird zum dynamischen Mounten verschiedener Komponenten verwendet. Verwenden Sie das Attribut is, um die zu mountende Komponente auszuwählen.

Beispiele sind wie folgt:

<p id="app21">
   <component :is="currentView"></component>
   <button @click="changeView(&#39;A&#39;)">切换到A</button>
   <button @click="changeView(&#39;B&#39;)">切换到B</button>
   <button @click="changeView(&#39;C&#39;)">切换到C</button>
  </p>
var app21 = new Vue({
 el: '#app21',
 data: {
  currentView: 'comA'
 },
 methods: {
  changeView: function(data){
   this.currentView = 'com'+ data  //动态地改变currentView的值就可以动态挂载组件了。
  }
 },
 components: {
  comA: {
   template: '<p>组件A</p>'
  },
  comB: {
   template: '<p>组件B</p>'
  },
  comC: {
   template: '<p>组件C</p>'
  }
 }
});
Nach dem Login kopieren

4. Asynchrone Komponenten

Wenn Ihr Projekt groß genug ist und Sie genug verwenden Komponenten ist es an der Zeit, über Leistungsprobleme nachzudenken, da das Laden aller Komponenten zu Beginn unnötigen Mehraufwand verursacht.

Glücklicherweise ermöglicht Ihnen Vue.js, eine Komponente als Factory-Funktion zu definieren und die Komponente dynamisch zu analysieren. Vue löst die Factory-Funktion nur aus, wenn die Komponente gerendert werden muss, und speichert die Ergebnisse für das anschließende erneute Rendern zwischen. Die Factory-Funktion von

 <p id="app22">
      <my-component22></my-component22>
    </p>
Vue.component('my-component22',function(resolve, reject){
  window.setTimeout(function(){
    resolve({
      template: '<p>我是异步渲染的</p>'
    })
  },2000)
});
var app22 = new Vue({
  el: '#app22'
});
Nach dem Login kopieren
erhält einen Auflösungsrückruf und wird aufgerufen, wenn die vom Server heruntergeladene Komponentendefinition empfangen wird. Sie können auch „reject(reason)“ aufrufen, um einen Ladefehler anzuzeigen.

Das setTimeout dient hier nur dazu, die Asynchronität zu demonstrieren. Die spezifische Download-Logik kann beispielsweise von Ihnen selbst festgelegt werden. Schreiben Sie die Komponentenkonfiguration als
Objekt--Konfiguration, fordern Sie sie über Ajax an und rufen Sie dann „resolve“ auf Übergeben Sie die Konfigurationsoptionen.

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:

So entwickeln Sie eine benutzerdefinierte Bibliothek

So verwenden Sie JS, um mehrere Arrays zur Neuberechnung zusammenzuführen

Das obige ist der detaillierte Inhalt vonErweiterte Verwendung von Vue-Komponenten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage