Heim > Web-Frontend > js-Tutorial > Hauptteil

So implementieren Sie Slot-Verteilungsinhalte in Vue2.0

亚连
Freigeben: 2018-06-21 14:16:43
Original
1346 Leute haben es durchsucht

In diesem Artikel wird hauptsächlich die Methode zur Verteilung von Vue2.0-Slot-Inhalten und zur Überprüfung von Requisiten vorgestellt. Der Herausgeber findet sie recht gut, daher werde ich sie jetzt mit Ihnen teilen und als Referenz verwenden. Folgen wir dem Editor und werfen wir einen Blick darauf.

Verwenden Sie eine Möglichkeit, den Inhalt der übergeordneten Komponente und der eigenen Vorlage der untergeordneten Komponente zu mischen. Verwenden Sie spezielle -Elemente in untergeordneten Komponenten als Slots für Inhalte.

Slot-Verteilungsinhalt

Übersicht:

Einfach ausgedrückt: Wenn die übergeordnete Komponente etwas DOM in das untergeordnete Element einfügen muss Komponente: Ob diese DOMs angezeigt werden, nicht angezeigt werden, wo sie angezeigt werden und wie sie angezeigt werden, ist die Aufgabe der Slot-Verteilung.

Standardmäßig

Der Inhalt der übergeordneten Komponente innerhalb der untergeordneten Komponente wird nicht angezeigt.

Beispielcode:

<p id="app"> 
  <children> 
    <span>12345</span> 
    <!--上面这行不会显示--> 
  </children> 
</p> 
<script> 
  var vm = new Vue({ 
    el: &#39;#app&#39;, 
    components: { 
      children: {  //这个无返回值,不会继续派发 
        template: "<button>为了明确作用范围,所以使用button标签</button>" 
      } 
    } 
  }); 
</script>
Nach dem Login kopieren

Der angezeigte Inhalt ist eine Schaltfläche und enthält nicht den Inhalt im Span-Tag;

1 >

In der Vorlage der untergeordneten Komponente gibt es ein Slot-Tag, das als Backup-Inhalt gilt und verwendet wird, wenn die übergeordnete Komponente keinen Inhalt bereitstellt. Wenn die übergeordnete Komponente Inhalte bereitstellt, wird das gesamte Inhaltsfragment in den DOM-Speicherort des Slots eingefügt und das Slot-Tag selbst ersetzt.

Die untergeordnete Komponentenvorlage enthält kein Slot-Tag und der von der übergeordneten Komponente bereitgestellte Inhalt wird verworfen.

Wenn viele Inhalte ersetzt werden müssen, können diese direkt ersetzt werden mit einer Vorlage.

<p id="app">
  <h2>自定义组件</h2>
  <custom>
   <!-- 当卸载自定义标签之前的内容,要混合子组件中的模板 -->
   <p>我是父组件提供的内容,我的存在会替换子组件中slot标签内的内容</p> 
  </custom>
</p>
<script type="text/javascript" src=&#39;https://i0.jrjimg.cn/zqt-red-1000/focus/focus2017YMZ/teamFrighting/js/vue.min.js&#39;></script>
<script>
 Vue.component(&#39;custom&#39;,{
  template:`
   <p>
    <slot>
     <p>我备用内容,如果子组件中有内容会替换我哦~</p>
    </slot>
   </p>
  `
 })
 new Vue({
  el:"#app"
 })
</script>
Nach dem Login kopieren

Es ist an der Zeit, Zeuge des Wunders zu werden. Der folgende Inhalt wird auf der Seite angezeigt

Single slots.png

2. Ja Das Slot

-Element mit einem bestimmten Namen kann einen speziellen Attributnamen verwenden, um zu konfigurieren, wie Inhalte verteilt werden.

<p id="app">
  <h2>自定义组件</h2>
  <custom>
   <!-- <p slot="one">我替换one</p> -->
   <p slot="three">我替换three</p>
   <p slot="two">我替换two</p>
   <span slot="two">我替换two</span>
   <p slot="one">我替换one</p>
  </custom>
</p>
<script type="text/javascript" src=&#39;https://i0.jrjimg.cn/zqt-red-1000/focus/focus2017YMZ/teamFrighting/js/vue.min.js&#39;></script>
<script>
 Vue.component(&#39;custom&#39;,{
  template:`
   <p>
    <slot name="one"> 
     <p>我是one</p>
    </slot>
    <slot name="two">
     <p>我是two</p>
    </slot>
    <slot name="three">
     <p>我是three</p>
    </slot>
   </p>
  `
 })
 new Vue({
  el:"#app"
 })
</script>
Nach dem Login kopieren

Was wird Ihrer Meinung nach auf der Seite angezeigt? Ich sage es dir, wenn du es richtig errätst. -

Benannter Slot.png

Sind Sie von der Reihenfolge überrascht? Dies liegt daran, dass die Seite den Inhalt ersetzt und entsprechend der Reihenfolge rendert die Slots in der Unterkomponentenseite.

Sie können einen anonymen Slot verwenden, um Inhalte zu verarbeiten, für die es keinen entsprechenden Slot gibt

 <p id="app">
  <h2>自定义组件</h2>
  <custom>
   <!-- <p slot="one">我替换one</p> -->
   <p slot="three">我替换three</p>
   <p slot="two">我替换two</p>
   <span slot="two">我替换two</span>
   <p slot="one">我替换one</p>
   <p>替换无名的slot</p>
   <p>替换无名的slot</p>
   <p>替换无名的slot</p>
  </custom>
 </p>
<script type="text/javascript" src=&#39;https://i0.jrjimg.cn/zqt-red-1000/focus/focus2017YMZ/teamFrighting/js/vue.min.js&#39;></script>
<script>
 Vue.component(&#39;custom&#39;,{
  template:`
   <p>
    <slot name="one"> 
     <p>我是one</p>
    </slot>
    <slot name="two">
     <p>我是two</p>
    </slot>
    <slot name="three">
     <p>我是three</p>
    </slot>
    <slot>
     <p>我是无名的slot</p>
    </slot>
   </p>
  `
 })
 new Vue({
  el:"#app"
 })
</script>
Nach dem Login kopieren

Der anonyme Slot wird durch Inhalte ersetzt, für die es keinen entsprechenden Slot gibt.

Anonymer Slot.png

3. Kompilierungsumfang

Der Inhalt der übergeordneten Komponentenvorlage ist in Die übergeordnete Komponente wird im Bereich kompiliert

Der Inhalt der Unterkomponentenvorlage wird im Bereich der Unterkomponente kompiliert

<p id="app">
  <h2>自定义组件</h2>
  <custom>
   <!-- 渲染的数据,是父组件中的数据,如果想使用子组件中的数据,就在子组件中建立自己的数据 -->
   {{message}}
  </custom>
</p>
<script type="text/javascript" src=&#39;https://i0.jrjimg.cn/zqt-red-1000/focus/focus2017YMZ/teamFrighting/js/vue.min.js&#39;></script>
<script>
 Vue.component(&#39;custom&#39;,{
  data(){
   return {
    message:"我是子组件的数据"
   }
  },
  template:`
   <p>
    <p>我是{{message}}</p>
    <slot>
    // 这的内容会被父组件中内容替换
     <p> {{message}}</p>
    </slot>
   </p>
  `
 })
 new Vue({
  el:"#app",
  data:{
   message:"我是父组件的数据"
  }
 })
</script>
Nach dem Login kopieren

Seitenrendering

Kompiliert Scope.png

Die Verwendung der Slot-Verteilung macht unsere Anwendung von Komponenten flexibler.

Einseitiger Datenfluss

Daten werden von der übergeordneten Komponente zur untergeordneten Komponente weitergeleitet und können nur einzeln gebunden werden.

Die von der übergeordneten Komponente übergebenen Daten sollten in der untergeordneten Komponente nicht geändert werden.

Ändernde Requisite:

1. Verwendung als Anfangswert lokaler Daten in Daten

2. Als berechnetes Attribut in einer Unterkomponente

Requisitenüberprüfung

Um unnötige Fehler zu vermeiden, wenn die übergeordnete Komponente Werte an die untergeordnete Komponente überträgt, können wir den Typ des Prop-Werts so festlegen, dass bei der Übertragung der übergeordneten Komponente der Wert an die untergeordnete Komponente, genauer

  props:{
  propA:Number, 数值类型
  propB:[String,Number], 多种类型
  propC:{type:String,required:true}, 必填项
  propD:{type:Number,default:100}, 默认是
  propE:{typr:Number,default:function(){return 1000}}
  propF:{validator:function(value){return value>2}} 符合value>2的值
  }
Nach dem Login kopieren

Ich verstehe nicht, schauen Sie sich den folgenden Fall an, wenn die übergeordnete Komponente aufgefordert wird, einen Wert an die untergeordnete Komponente zu übergeben

1 muss übergeben werden

2. Der Wert muss vom Typ Numerisch sein

3 Der Standardparameter ist 10

 Vue.component(&#39;custom-cmpontent&#39;,{
  data(){
   return {
    incrementCount:this.count //作为局部组件的data的初始值
   }
  },
  props:{
   count:{
    type:Number, // 类型
    default:10, // 默认值
    required:true //必须要传参数
   }
  },
  computed:{
   incrementCount2(){
    return this.incrementCount
   }
  },
  template:`
    <p>
     <h2>我是一个自定义组件</h2>
     <input type=&#39;button&#39; value="改变count的值" @click="changeCount">
     {{incrementCount}}
    </p>
  `,
  methods:{
   changeCount:function(value){
    this.incrementCount++;
    this.$emit(&#39;receive&#39;)
   }
  }
 })
 new Vue({
  el:"#app",
  data:{
   count:0
  },
  methods:{
   countH:function(){
    this.count++;
   }
  }
 })
Nach dem Login kopieren
Wenn wir einen Wert an die Unterkomponente und eine Zeichenfolge übergeben bestanden ist, wird ein Fehler gemeldet

oben habe ich es für alle zusammengestellt und hoffe, dass es in Zukunft für alle hilfreich sein wird.

Verwandte Artikel:

So verwenden Sie das Anforderungsnetzwerk für Anforderungsvorgänge in WeChat-Miniprogrammen

So verwenden Sie Ajax in WeChat Mini -Programme, die eine Anforderung für Serverdaten implementieren

Was sind die speziellen Datentypen in JavaScript

Das obige ist der detaillierte Inhalt vonSo implementieren Sie Slot-Verteilungsinhalte in Vue2.0. 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