Maison > interface Web > Voir.js > Comment utiliser provide/inject dans Vue pour implémenter un transfert de données non réactif entre les composants ancêtres et les composants descendants

Comment utiliser provide/inject dans Vue pour implémenter un transfert de données non réactif entre les composants ancêtres et les composants descendants

王林
Libérer: 2023-06-11 10:35:12
original
1587 Les gens l'ont consulté

Vue fournit deux API de haut niveau : provide et inject, qui peuvent aider les développeurs à effectuer un transfert de données non réactif entre les composants ancêtres et les composants descendants. Ces données peuvent être non seulement des valeurs primitives, des tableaux et des objets, mais aussi des fonctions et des classes.

Dans Vue, le transfert de données entre composants est généralement divisé en deux types : le transfert de données réactif entre les composants parents et enfants et entre les composants frères. Cependant, nous devons parfois transmettre des données non réactives entre ancêtres et descendants. À ce stade, l'utilisation de provide/inject devient nécessaire.

provide et inject ont été introduits dans Vue2.2.0 pour résoudre le problème du transfert de données entre les composants de plusieurs niveaux. Auparavant, si nous souhaitions transférer des données entre des composants parents et des composants enfants, nous l'implémentions généralement via des accessoires et des événements. Cependant, si nous avons besoin d'un transfert de données non réactif entre les composants ancêtres et les composants descendants, les accessoires et les événements ne conviennent pas pour le moment, nous devons utiliser provide et inject.

Maintenant, regardons un exemple :

<grand-parent>
    <parent>
        <child></child>
    </parent>
</grand-parent>
Copier après la connexion

Dans cet exemple, grand-parent est le composant ancêtre, parent est le composant enfant et enfant est le composant descendant. Nous pouvons utiliser provide pour fournir certaines données chez le grand-parent, puis utiliser inject chez l'enfant pour accéder à ces données.

Tout d'abord, nous devons fournir des données en utilisant provide dans le composant grand-parent :

provide: {
    someData: '这是一些数据'
}
Copier après la connexion

Ici, nous fournissons une donnée non réactive nommée someData.

Ensuite, utilisez inject dans le composant enfant pour accéder à ces données :

inject: ['someData'],
Copier après la connexion

Ici, nous utilisons inject pour injecter des données someData, afin que nous puissions accéder à someData dans le composant enfant.

En plus des types de données simples, nous pouvons également utiliser provide pour fournir certaines fonctions et classes :

provide: {
    someMethod: this.doSomething,
    someClass: new MyClass()
}
Copier après la connexion

Dans cet exemple, nous fournissons non seulement une méthode, mais également une instance de la classe. Dans les composants descendants, nous pouvons utiliser inject pour accéder à ces données :

inject: ['someMethod', 'someClass'],
Copier après la connexion

Ici, nous utilisons inject pour injecter someMethod et someClass afin que nous puissions accéder à ces données dans les composants descendants.

Il convient de noter que puisque provide et inject ne répondent pas, les modifications de données ne seront pas écoutées. Si nous devons effectuer un transfert de données réactif, nous devons utiliser des accessoires et des événements.

Pour résumer, fournir et injecter sont des API très utiles dans Vue, qui peuvent nous aider à effectuer un transfert de données non réactif entre ancêtres et descendants. Provide et inject sont un bon choix lorsque nous devons transmettre des données non réactives.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal