inject() in untergeordneten Komponenten
inject() mit Standardwerten, erforderliche Injection, Symbol-Schlüssel zur Namensraumbildung.
inject() in untergeordneten Komponenten ist eine kostenlose Vue Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Vue Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Vue Academy-Kurs umfasst insgesamt 4 Lektionen.
Die Funktion inject
inject ruft einen Wert ab, den ein Vorfahr unter demselben Schlüssel bereitgestellt hat. Rufen Sie die Funktion in <script setup> auf.
import { inject } from "vue";
const theme = inject("theme");Die Reaktivität bleibt erhalten
Wenn der Vorfahr ein ref bereitgestellt hat, ist der injizierte Wert dasselbe ref. Das Lesen von theme.value bleibt reaktiv und wird aktualisiert, wenn der Provider den Wert ändert.
const theme = inject("theme");
// in template: {{ theme }} (auto-unwrapped)Einen Standardwert bereitstellen
Wenn kein Vorfahr den Schlüssel bereitgestellt hat, gibt inject undefined zurück. Übergeben Sie ein zweites Argument als Standardwert, damit die Komponente auch in diesem Fall sinnvoll funktioniert.
const theme = inject("theme", "light");
// "light" used when nothing was providedStandardwerte mit Factory-Funktionen
Für Objektwerte oder aufwendige Standardwerte übergeben Sie eine Factory-Funktion und setzen das dritte Argument auf true. So wird der Standardwert nur bei Bedarf erstellt.
const config = inject("config", () => ({ retries: 3 }), true);Aktionen injizieren
Wenn der Provider ebenfalls eine Funktion bereitgestellt hat, injizieren Sie sie auf dieselbe Weise und rufen Sie sie auf, um Änderungen anzufordern – die Änderung des Zustands bleibt Aufgabe des Providers.
const updateName = inject("updateName");
updateName("Grace");Ein Store-Objekt injizieren
Wenn der Provider State und Aktionen gebündelt hat, injizieren Sie das gesamte Objekt und destrukturieren Sie daraus, was Sie benötigen.
const { user, updateName } = inject("userStore");Typsichere Injection in TypeScript
Vue exportiert InjectionKey<T>, um Injection typsicher zu machen. Ein typisierter Schlüssel teilt TypeScript genau mit, welche Struktur der injizierte Wert hat.
import type { InjectionKey, Ref } from "vue";
export const themeKey: InjectionKey<Ref<string>> = Symbol("theme");Den typisierten Schlüssel verwenden
Verwenden Sie den typisierten Schlüssel für Provide und Inject. TypeScript leitet nun den Werttyp ab und meldet inkompatible Typen.
provide(themeKey, theme); // theme: Ref<string>
const theme = inject(themeKey); // inferred Ref<string> | undefinedSymbol-Schlüssel für Eindeutigkeit
Die Verwendung eines Symbol als Schlüssel, oft zusammen mit InjectionKey, garantiert, dass es zwischen unabhängigen Providern in einer großen Codebasis keine Kollisionen von String-Schlüsseln gibt.
export const authKey = Symbol("auth") as InjectionKey<AuthService>;Fehlende Provider behandeln
In streng konfigurierten Umgebungen möchten Sie möglicherweise einen Fehler auslösen, wenn eine erforderliche Injection fehlt. So werden Fehler bei der Verdrahtung frühzeitig sichtbar, anstatt dass unbemerkt undefined verwendet wird.
const auth = inject(authKey);
if (!auth) throw new Error("auth provider missing");Beliebig tief im Teilbaum injizieren
Eine Komponente kann unabhängig von ihrer Tiefe injizieren, solange ein Vorfahr den Schlüssel bereitgestellt hat. Die Zwischenkomponenten bleiben unverändert – genau das ist der Zweck von provide/inject.
Kurze Überprüfung
Was gibt inject("theme", "light") zurück, wenn kein Provider vorhanden ist?
Zusammenfassung
Sie haben gelernt, dass inject(key) einen bereitgestellten Wert liest und dabei die Reaktivität von refs erhält. Übergeben Sie einen Standardwert oder eine Factory-Funktion für einen sinnvollen Fallback und verwenden Sie InjectionKey<T> zusammen mit Symbol-Schlüsseln für typsichere, kollisionsfreie Injection.
Häufig gestellte Fragen
Ist die Lektion „inject() in untergeordneten Komponenten“ kostenlos?
Ja — der vollständige Text von „inject() in untergeordneten Komponenten“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Vue Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Vue Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „inject() in untergeordneten Komponenten“?
inject() mit Standardwerten, erforderliche Injection, Symbol-Schlüssel zur Namensraumbildung. Du übst Vue Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Vue Academy zu starten?
Keine Vorkenntnisse erforderlich. Vue Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „inject() in untergeordneten Komponenten“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Vue Academy-Lektion Code schreiben und ausführen?
Ja. Jede Vue Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Das Problem des Prop Drilling
- provide() in übergeordneten Komponenten
- inject() in untergeordneten Komponenten
- provide/inject für State auf App-Ebene