15.04.2025

Der ultimative Guide für saubere Datenflüsse in Vue

Prop Drilling in Vue.js vermeiden – So klappt's

Daten zwischen Komponenten zu teilen ist in Vue.js Alltag – aber was einfach klingt, wird schnell messy. Der Grund: Prop Drilling. Dabei reichst du Props durch mehrere Komponenten durch, auch wenn sie nur am Ende gebraucht werden. Das funktioniert zwar – ist aber alles andere als elegant. Wenn du prop drilling in Vue vermeiden willst, bist du hier richtig. Wir zeigen dir Best Practices und Tools wie provide/inject und State Management mit Pinia, um deine App sauber, wartbar und skalierbar zu halten.

Prop Drilling in Vue: So vermeidest du Chaos im Code

Inhaltsverzeichnis

Was ist Prop Drilling in Vue.js?

Prop Drilling bedeutet, dass Daten von einer übergeordneten Komponente (Parent) durch mehrere Zwischen Komponenten hindurch an eine tiefer liegende Komponente (Child) weitergereicht werden.

Beispiel für Prop Drilling

Angenommen, eine tief liegende Komponente benötigt eine Information von einer übergeordneten Komponente:


<script setup>
import { ref } from 'vue';
import ParentComponent from './ParentComponent.vue';

const username = ref('Max');
script>
<template>
  <ParentComponent :username="username" />
template>

<script setup>
import ChildComponent from './ChildComponent.vue';

defineProps(['username']);
script>

<template>
  <ChildComponent :username="username" />
template>

<script setup>
defineProps(['username']);
script>

<template>
  <p>Hallo, {{ username }}!p>
template>

Hier wird username von App.vue über ParentComponent.vue an ChildComponent.vue weitergereicht – selbst wenn ParentComponent den Wert gar nicht benötigt.


Warum solltest du Prop Drilling in Vue vermeiden?

In kleinen Projekten geht’s vielleicht noch – aber spätestens, wenn dein Code wächst, wirst du es bereuen. Hier die größten Pain Points beim Prop Drilling in Vue.js:

Unübersichtlicher Code: Wenn eine Prop durch viele Komponenten weitergereicht wird, kann es schwierig werden, den Datenfluss nachzuvollziehen.

Hoher Wartungsaufwand: Falls sich eine Prop ändert, müssen alle beteiligten Komponenten angepasst werden.

Geringe Wiederverwendbarkeit: Komponenten werden unnötig voneinander abhängig, da sie Daten weitergeben müssen, die sie gar nicht selbst nutzen.

Wenn du Vue.js Best Practices suchst, führt kein Weg daran vorbei: Prop Drilling vermeiden, wo immer es geht.

Du willst Vue.js richtig einsetzen – Wir helfen dir dabei!

Vue.js Datenfluss optimieren – Alternativen zu Prop Drilling

Zum Glück bietet Vue verschiedene Lösungen, um Daten effizient weiterzugeben, ohne sie durch jede Zwischenkomponente zu schleifen.

1. provide und inject in Vue.js - Die eingebaute Lösung

Vue bietet mit provide und inject eine native Möglichkeit, Daten an tiefer liegende Komponenten weiterzugeben.

Beispiel mit provide und inject


<script setup>
import { provide, ref } from 'vue';
import ChildComponent from './ChildComponent.vue';

const username = ref('Max');
provide('username', username);
script>

<template>
  <ChildComponent />
template>

<script setup>
import { inject } from 'vue';

const username = inject('username');
script>

<template>
  <p>Hallo, {{ username }}!p>
template>

Vorteile von mit provide und inject:

✅ Keine unnötigen Props in Zwischenkomponenten

✅ Bessere Struktur und Lesbarkeit

✅ Ideal für Themes, Lokalisierung, Form Handling

Nachteile:

⚠️ Funktioniert nur innerhalb eines Komponentenbaums

⚠️ Datenfluss ist weniger offensichtlich

Trotzdem: Für kleinere bis mittlere Projekte eine super Lösung, um Prop Drilling in Vue zu vermeiden.

2. State Management mit Pinia

Für größere Anwendungen ist ein State-Management-Tool wie Pinia) eine noch bessere Alternative.

Beispiel mit Pinia

Zunächst muss Pinia installiert werden:

yarn add pinia
# or
npm install pinia

Dann wird ein Store erstellt:

// stores/user.ts
import { defineStore } from 'pinia';
import { ref } from 'vue';

export const useUserStore = defineStore('user', () => {
  const username = ref<string>('Max');

  return {
    username,
  };
});

Nun kann der Store in jeder Komponente genutzt werden:


<script setup>
import { useUserStore } from '@/stores/user';

const userStore = useUserStore();
script>

<template>
  <p>Hallo, {{ userStore.username }}!p>
template>

Vorteile von Pinia:

✅ Zentrale Verwaltung aller Zustände

✅ Kein Prop Drilling

✅ Perfekt für große, komplexe Vue-Projekte

Mit Pinia kannst du deinen Vue.js Datenfluss optimieren und den Code endlich entkoppeln und skalieren.


Fazit: So vermeidest du Prop Drilling in Vue.js richtig

Prop Drilling kann zu unübersichtlichem Code und hohem Wartungsaufwand führen. Glücklicherweise bietet Vue mit provide/inject und Pinia bessere Alternativen für saubere und wartbare Datenflüsse.

  • Für kleinere Projekte ist provide/inject oft schon genug.
  • Bei größeren Projekten kommst du an einem sauberen State Management mit Pinia nicht vorbei.

Mit der richtigen Methode lässt sich Prop Drilling vermeiden, wodurch eine bessere Code-Struktur und Wartbarkeit sichergestellt wird.

Beide Lösungen helfen dir, vue.js best practices umzusetzen und deinen Komponentenbaum zu entwirren.


FAQ – Häufige Fragen zu Prop Drilling in Vue

1. Wann ist Prop Drilling okay?

Prop Drilling ist in Ordnung, wenn eine Prop nur durch eine oder zwei Komponenten weitergereicht wird und keine komplexen Datenstrukturen involviert sind. In kleinen Projekten kann es eine einfache Lösung sein, ohne zusätzlichen Code für State-Management oder provide/inject.

2. Wann sollte provide und inject anstelle von Props verwendet werden?

Diese Methode eignet sich besonders für global relevante Daten wie Theme-Einstellungen, Übersetzungen oder übergeordnete Form-Validierungen. Sie ist ideal, wenn Daten an viele untergeordnete Komponenten weitergegeben werden sollen, ohne unnötige Prop-Ketten zu erzeugen.

3. Wann ist Pinia die bessere Lösung?

Pinia sollte verwendet werden, wenn mehrere Komponenten unabhängig voneinander auf denselben Zustand zugreifen müssen. Es ist besonders nützlich für Benutzerverwaltung, Warenkörbe oder größere Anwendungen, in denen Daten aus verschiedenen Bereichen der Anwendung benötigt werden.

4. Kann provide und inject mit Pinia kombiniert werden?

Ja! Beispielsweise kann provide genutzt werden, um eine Instanz eines Pinia-Stores nur innerhalb eines bestimmten Komponentenbaums zu überschreiben, ohne den globalen Zustand zu verändern.

5. Gibt es noch andere Alternativen zur Datenweitergabe?

Ja. Je nach Anwendungsfall können Composables genutzt werden, um wiederverwendbare Logik und State zu kapseln. In seltenen Fällen kann auch ein Event Bus sinnvoll sein, insbesondere wenn Ereignisse zwischen nicht direkt verwandten Komponenten ausgetauscht werden müssen.


Hast du noch Fragen oder eine Meinung? Mit deinem GitHub Account kannst Du es uns wissen lassen...


Was unsere Kunden über uns sagen

Ofa Bamberg GmbHRainer Kliewe
Ludwig-Maximilians-Universität MünchenProf. Dr. Mario Haim
Deutsches MuseumGeorg Hohmann
Fonds Finanz Maklerservice GmbHNorbert Porazik
Technische Universität HamburgSören Schütt-Sayed
  • Ofa Bamberg GmbH
    Ofa Bamberg GmbH
    B2B Online-Shop | B2C Website | Hosting | Betreuung | Security
    Rainer Kliewe
    © Ofa Bamberg GmbH
    Blueshoe betreut uns und unsere Webapplikationen seit vielen Jahren. Vom Online-Shop bis hin zu großen Teilen unseres Web-Umfelds hat sich das Unternehmen stets kompetent, verlässlich und vorausschauend gezeigt. Wir sind sehr zufrieden mit Blueshoe als Partner.
    Rainer KlieweGeschäftsführer
  • Ludwig-Maximilians-Universität München
    Ludwig-Maximilians-Universität München
    Plattformentwicklung | Hosting | Betreuung | APIs | Website
    Prof. Dr. Mario Haim
    Blueshoe hat unsere Forschungsdatenplattform Munich Media Monitoring (M3) entwickelt und uns hervorragend dabei beraten. Das Team hat unsere Anforderungen genau verstanden und sich aktiv in die Ausgestaltung der Software und der Betriebsumgebung eingebracht. Wir sind froh, dass auch Wartung und weiterführender Support in Blueshoes Händen liegen.
    Prof. Dr. Mario HaimLehrstuhlinhaber, Institut für Kommunikationswissenschaft und Medienforschung
  • Deutsches Museum
    Deutsches Museum
    Digitalisierung | Beratung | Datenbank-Optimierung | GraphQL | CMS
    Georg Hohmann
    Foto: Anne Göttlicher
    Im Rahmen eines komplexen Digitalisierungsprojekts für unsere Exponate-Datenbank war Blueshoe ein äußerst verlässlicher Partner. Sie haben uns nicht nur während des gesamten Projekts hervorragend beraten, sondern unsere Anforderungen perfekt umgesetzt. Dank ihrer Arbeit ist unsere Datenbank nun ein bedeutender Mehrwert für die weltweite wissenschaftliche Forschung.
    Georg HohmannLeiter Deutsches Museum Digital
  • Fonds Finanz Maklerservice GmbH
    Fonds Finanz Maklerservice GmbH
    Plattformentwicklung | Prozess-Systeme | Hosting | Betreuung | Zertifikate | Website
    Norbert Porazik
    © Fonds Finanz Maklerservice GmbH
    Blueshoe ist unsere verlängerte Werkbank für Entwicklung, Wartung und Support unserer Weiterbildungs- und Zertifizierungsplattformen. Das Team hat sich gründlich in unsere Abläufe eingearbeitet, und wir freuen uns, Blueshoe als zuverlässigen Partner an unserer Seite zu haben.
    Norbert PorazikGründer und Geschäftsführer
  • Technische Universität Hamburg
    Technische Universität Hamburg
    Plattformentwicklung | Beratung | Prozess-Systeme | Hosting | Website
    Sören Schütt-Sayed
    Seit 2019 unterstützt uns die Blueshoe GmbH tatkräftig bei der Entwicklung und Weiterentwicklung des "Digital Learning Lab" und der "Digital Learning Tools". Dank ihrer Beratung konnten wir von Anfang an auf eine zukunftssichere, moderne technische Struktur setzen. Die Zusammenarbeit ist reibungslos, und wir fühlen uns rundum gut betreut. Und davon profitieren dann auch die Lehrkräfte in Hamburg.
    Sören Schütt-SayedOberingenieur