Vue3 inject()-Funktion
inject()Die inject()-Funktion ist eine von Vue3 bereitgestellte API, die in untergeordneten Komponenten verwendet wird, um Abhängigkeiten zu erhalten, die von Eltern- oder Vorfahrenkomponenten bereitgestellt werden durchprovide()die provide()-Funktion. Sie wird hauptsächlich für die Datenübertragung zwischen Komponenten auf verschiedenen Ebenen verwendet, insbesondere wenn der Komponentenbaum tief ist.
Grundlegende Syntax
Beispiel
import { inject } from 'vue';
const value = inject(key, defaultValue);
const value = inject(key, defaultValue);
- key: Ein String oder Symbol, das die eindeutige Kennung der zu injizierenden Abhängigkeit darstellt.
- defaultValue: Optionaler Parameter. Wenn die entsprechende Abhängigkeit nicht gefunden wird, wird der Standardwert zurückgegeben.
Anwendungsfälle
inject()Wird normalerweise zusammen mitprovide()und ist für die folgenden Szenarien geeignet:
- Komponentenkommunikation über Ebenen hinweg: Wenn die Komponentenhierarchie tief ist, kann dadurch
provide()undinject()der Aufwand vermieden werden, Props Ebene für Ebene weiterzureichen. - Globale Zustandsverwaltung: In kleinen Anwendungen können Sie
provide()undinject()verwenden, um State-Management-Tools wie Vuex zu ersetzen. - Plugin-Entwicklung: Wenn in Plugins globale Funktionalität oder Konfiguration bereitgestellt wird,
inject()ist es ein praktisches Werkzeug.
Codebeispiele
Elternkomponente verwendet provide(), um Daten bereitzustellen
Beispiel
import { provide, ref } from 'vue';
export default {
setup() {
const message = ref('Hello, Vue3!');
provide('message', message); // Daten bereitstellen
}
};
export default {
setup() {
const message = ref('Hello, Vue3!');
provide('message', message); // Daten bereitstellen
}
};
Kindkomponente verwendet inject(), um Daten zu erhalten
Beispiel
import { inject } from 'vue';
export default {
setup() {
const message = inject('message', 'Default Message'); // Daten injizieren
return { message };
}
};
export default {
setup() {
const message = inject('message', 'Default Message'); // Daten injizieren
return { message };
}
};
Hinweise
- Reaktivität von Abhängigkeiten: Wenn die über
provide()bereitgestellten Daten reaktiv sind (z. B.refoderreactive), dann bleiben in Kindkomponenten die mitinject()abgerufenen Daten ebenfalls reaktiv. - Rolle von Standardwerten: Wenn die entsprechende Abhängigkeit nicht gefunden wird,
inject()wird der Standardwert zurückgegeben. Es wird empfohlen, immer einen Standardwert festzulegen, um Laufzeitfehler zu vermeiden. - Übermäßige Nutzung vermeiden: Obwohl
provide()undinject()sehr praktisch ist, kann übermäßige Nutzung zu einer erhöhten Kopplung zwischen Komponenten führen. Es wird empfohlen, es nur bei Bedarf zu verwenden.
Andere Erweiterungen
Vue3 Options API