Fonction inject() de Vue3
inject()La fonction inject() est une API fournie par Vue3, utilisée dans les composants enfants pour obtenir les dépendances fournies par les composants parents ou ancêtres viaprovide()la fonction provide(). Elle est principalement utilisée pour le transfert de données entre composants de niveaux différents, en particulier lorsque l'arbre de composants est profond.
Syntaxe de base
Exemple
import { inject } from 'vue';
const value = inject(key, defaultValue);
const value = inject(key, defaultValue);
- key: Une chaîne ou un Symbol représentant l'identifiant unique de la dépendance à injecter.
- defaultValue: paramètre optionnel. Si la dépendance correspondante n'est pas trouvée, la valeur par défaut est renvoyée.
Cas d'utilisation
inject()Généralement utilisé avecprovide()et convient aux scénarios suivants :
- Communication entre composants de différents niveaux: lorsque la hiérarchie des composants est profonde, grâce à
provide()etinject()il permet d'éviter la corvée de passer les props couche par couche. - Gestion de l'état global: dans les petites applications, vous pouvez utiliser
provide()etinject()pour remplacer des outils de gestion d'état tels que Vuex. - Développement de plugins: lors de la fourniture de fonctionnalités ou de configurations globales dans des plugins,
inject()c'est un outil pratique.
Exemples de code
Le composant parent utilise provide() pour fournir des données
Exemple
import { provide, ref } from 'vue';
export default {
setup() {
const message = ref('Hello, Vue3!');
provide('message', message); // Fournir des données
}
};
export default {
setup() {
const message = ref('Hello, Vue3!');
provide('message', message); // Fournir des données
}
};
Le composant enfant utilise inject() pour obtenir des données
Exemple
import { inject } from 'vue';
export default {
setup() {
const message = inject('message', 'Default Message'); // Injecter des données
return { message };
}
};
export default {
setup() {
const message = inject('message', 'Default Message'); // Injecter des données
return { message };
}
};
Notes
- Réactivité des dépendances: Si les données fournies via
provide()sont réactives (par exemple,refoureactive), puis dans les composants enfants, en utilisantinject()pour obtenir les données resteront également réactives. - Rôle des valeurs par défaut: Si la dépendance correspondante n'est pas trouvée,
inject()la valeur par défaut sera renvoyée. Il est recommandé de toujours définir une valeur par défaut pour éviter les erreurs d'exécution. - Éviter l'utilisation excessive: Bien que
provide()etinject()est très pratique, une utilisation excessive peut entraîner un couplage accru entre les composants. Il est recommandé de ne l'utiliser que lorsque c'est nécessaire.
Autres extensions
Vue3 API des options