Vue.js Slots: der ausführliche Leitfaden für Komponenten

Vue.js Slots: der ausführliche Leitfaden für Komponenten

Willkommen zu unserem vollständigen Leitfaden zu den Slots von VueJS. VueJS ist ein beliebtes JavaScript-Framework für den Bau von Webanwendungen. Es bringt viele Funktionen mit, die die Entwicklung einfacher und effizienter machen, darunter die Slots.

Slots sind ein mächtiges Mittel, um Inhalte zwischen Komponenten zu teilen. Mit ihnen lassen sich Stücke HTML mühelos wiederverwenden und an anderer Stelle der Anwendung einsetzen.

Was ist ein Slot?

Ein Slot ist ein besonderes Element in einer VueJS-Komponente, das eine Stelle festlegt, an der Inhalt von außen eingesetzt werden kann. Das ist praktisch, wenn du eine Komponente an verschiedenen Stellen deiner Anwendung wiederverwenden willst, jeweils mit anderem Inhalt.

Nimm etwa eine Komponente, die einen Button anzeigt. Willst du sie an mehreren Stellen deiner Anwendung einsetzen, aber jedes Mal mit einer anderen Beschriftung, dann bringt ein Slot genau diesen Inhalt bei jeder Verwendung hinein.

Wie verwendet man Slots?

Um Slots zu nutzen, definierst du zuerst einen Slot in der Hauptkomponente. Dafür schreibst du:

javascript
<template>
  <div>
    <slot></slot>
  </div>
</template>

Danach verwendest du diese Komponente und legst Inhalt in den definierten Slot:

javascript
<my-component>
  <p>Contenu injecté</p>
</my-component>

Der eingesetzte Inhalt erscheint in der Hauptkomponente an der Stelle des Slots.

Arten von Slots

Je nach Bedarf stehen dir mehrere Arten von Slots zur Verfügung:

Default-Slot

Dieser Slot kommt zum Zug, wenn kein anderer Slot angegeben ist. Definiert wird er schlicht mit <slot></slot>.

javascript
<template>
  <div>
    <slot></slot>
  </div>
</template>

Benannter Slot

Damit legst du mehrere Slots in derselben Komponente an und sprichst sie über ihren Namen an. Zum Beispiel:

javascript
<template>
  <div>
    <slot name="header"></slot>
    <slot name="footer"></slot>
  </div>
</template>

Scoped Slot

Dieser Slot lässt dich Inhalt mit eigenem Gültigkeitsbereich einsetzen. Definiert wird er so:

javascript
<template>
  <div>
    <slot v-bind:text="textProp"></slot>
  </div>
</template>

<script>
export default {
  data() {
    return {
      textProp: 'Texte par défaut'
    }
  }
}
</script>

Verwendest du die Komponente mit einem Scoped Slot, kannst du außerdem Eigenschaften durch den Slot hindurchreichen:

javascript
<my-component>
  <template v-slot:default="slotProps">
    {{ slotProps.text }}
  </template>
</my-component>

Typische Einsatzfälle für Slots

Slots sind in vielen Situationen nützlich, etwa:

  • Komponenten mit unterschiedlichen Inhalten wiederverwenden.
  • Komponenten mit eigenen Styles und eigenem Verhalten anpassen.
  • Themes für Komponenten bauen, die sich an verschiedenen Stellen der Anwendung flexibel einsetzen lassen.

Fazit

Slots sind eine mächtige Funktion von VueJS, mit der sich Inhalte flexibel und effizient zwischen Komponenten teilen lassen. Für unterschiedliche Bedürfnisse gibt es unterschiedliche Arten von Slots, und die Einsatzfälle sind zahlreich.

Wir hoffen, dieser ausführliche Leitfaden zu den Slots von VueJS war dir nützlich und du hast jetzt ein gutes Bild davon, wie sie funktionieren und wozu sie taugen.

JavaScriptVue.js

Damien Flandrin Webentwickler seit 2010, Gründer von Gekkode und Email Impact. Jeder Artikel wird vor der Veröffentlichung an einem echten Projekt getestet. Kontakt
Newsletter

Neue Tests, Tutorials und Projekte, per E-Mail.

Reproduzierbare Tests, versionierter Code, datierte Ergebnisse. Niemals Spam.