Comment configurer la communication parent-enfant dans vuejs
Comment configurer la communication parent-enfant dans vuejs : 1. Le composant parent utilise des accessoires pour transmettre des données au composant enfant ; 2. Le composant enfant envoie des messages au composant parent via "$emit" ; sync" sucre syntaxique ; 4. Utilisez " $attrs" et "$listeners" ; 5. Utilisez private et inject.
L'environnement d'exploitation de ce tutoriel : système Windows 7, vue version 2.9.6, ordinateur DELL G3.
vue a les méthodes de communication suivantes entre les composants du parent et de l'enfant:
props
$ Emit - L'encapsulation des composants est plus couramment utilisée
.Sync - Sucre syntaxique
$ attrs et $listeners -- couramment utilisés pour l'encapsulation de composants
privide et inject -- composants d'ordre supérieur
Ce qui suit présentera respectivement
1 et props
, qui sont souvent utilisés dans le développement quotidien , pour faire simple, nous pouvons transmettre des données aux sous-composants via des accessoires, tout comme une conduite d'eau. Les données du composant parent circulent de haut en bas vers le sous-composant et ne peuvent pas revenir en arrière. Il s'agit également du flux de données unique de l'introduction à la conception de Vue.
<div id="app"> <child :content="message"></child> </div> // Js let Child = Vue.extend({ template: '<h2>{{ content }}</h2>', props: { content: { type: String, default: () => { return 'from child' } } } }) new Vue({ el: '#app', data: { message: 'from parent' }, components: { Child } })
2. $emit
L'introduction officielle consiste à déclencher des événements sur l'instance actuelle, et des paramètres supplémentaires seront transmis au rappel de l'auditeur.
<div id="app"> <my-button @greet="sayHi"></my-button> </div> let MyButton = Vue.extend({ template: '<button @click="triggerClick">click</button>', data () { return { greeting: 'vue.js!' } }, methods: { triggerClick () { this.$emit('greet', this.greeting) } } }) new Vue({ el: '#app', components: { MyButton }, methods: { sayHi (val) { alert('Hi, ' + val) // 'Hi, vue.js!' } } })
3. Le modificateur .sync
existait en tant que fonction de liaison bidirectionnelle dans vue1.x, c'est-à-dire que le composant enfant peut modifier la valeur dans le composant parent. Parce qu'il violait le concept de conception du flux de données unidirectionnel, il a été supprimé dans vue2.x, mais ce modificateur .sync a été réintroduit dans vue 2.3.0+ et supérieur. Mais il n’existe que comme sucre syntaxique au moment de la compilation. Il est étendu en tant qu'écouteur v-on qui met automatiquement à jour les propriétés du composant parent.
Dans certains cas, nous pouvons être amenés à effectuer une « liaison bidirectionnelle » sur un accessoire. Malheureusement, une véritable liaison bidirectionnelle crée des problèmes de maintenance car les composants enfants peuvent modifier leurs composants parents sans source évidente de changement dans les composants parents ou enfants.
Le sucre syntaxique est écrit sous la forme suivante
<text-document v-bind:title="doc.title" v-on:update:title="doc.title = $event"> </text-document>
Nous pouvons donc utiliser le sucre de syntaxe .sync pour être abrégé sous la forme suivante
<text-document v-bind:title.sync="doc.title"></text-document>
Alors, comment obtenir une liaison bidirectionnelle, par exemple en modifiant la valeur dans le texte boîte du composant enfant tout en modifiant la valeur dans la valeur du composant parent, le code est le suivant
<div id="app"> <login :name.sync="userName"></login> {{ userName }} </div> let Login = Vue.extend({ template: ` <div class="input-group"> <label>姓名:</label> <input v-model="text"> </div> `, props: ['name'], data () { return { text: '' } }, watch: { text (newVal) { this.$emit('update:name', newVal) } } }) new Vue({ el: '#app', data: { userName: '' }, components: { Login } })
Il n'y a qu'une seule phrase dans le code :
this.$emit('update:name', newVal)
La syntaxe officielle est : update:myPropName où myPropName représente la valeur du prop à être mis à jour. Bien sûr, si vous n'utilisez pas le sucre de syntaxe .sync et utilisez .$emit ci-dessus, vous pouvez obtenir le même effet
4 $attrs et $listeners
Le site officiel explique $attrs comme suit :
. Inclut les éléments qui ne font pas partie de la portée parent. Liaisons de propriétés (à l'exception de la classe et du style) qui sont reconnues (et obtenues) en tant qu'accessoires. Lorsqu'un composant ne déclare aucun accessoire, toutes les liaisons de portée parent (sauf la classe et le style) seront incluses ici, et les composants internes peuvent être transmis via v-bind="$attrs" - lors de la création de composants de haut niveau. Très utile.
Le site officiel explique $listeners comme suit :
Contient les écouteurs d'événements v-on dans la portée parent (sans modificateur .native). Il peut être transmis aux composants internes via v-on="$listeners" - très utile lors de la création de composants de niveau supérieur.
Les attributs $attrs et $listeners sont comme deux boîtes de stockage, l'une est responsable du stockage des attributs et l'autre est responsable du stockage des événements. Ils stockent tous deux les données sous forme d'objets
<div id="app"> <child :foo="foo" :bar="bar" @one.native="triggerOne" @two="triggerTwo"> </child> </div>
let Child = Vue.extend({ template: '<h2>{{ foo }}</h2>', props: ['foo'], created () { console.log(this.$attrs, this.$listeners) // -> {bar: "parent bar"} // -> {two: fn} // 这里我们访问父组件中的 `triggerTwo` 方法 this.$listeners.two() // -> 'two' } }) new Vue({ el: '#app', data: { foo: 'parent foo', bar: 'parent bar' }, components: { Child }, methods: { triggerOne () { alert('one') }, triggerTwo () { alert('two') } } })
Comme vous pouvez le voir, nous pouvons utiliser. $attrs et $listeners pour stocker les données La transmission, l'appel et le traitement là où cela est nécessaire sont toujours très pratiques. Bien sûr, nous pouvons également le transmettre niveau par niveau via v-on="$listeners", et la descendance sera infinie !
5, private et inject
Jetons un coup d'œil à la description officielle de provide / inject :
Provide et inject fournissent principalement des cas d'utilisation pour les plug-ins/bibliothèques de composants haut de gamme. Il n'est pas recommandé de l'utiliser directement dans le code de l'application. Et cette paire d'options doit être utilisée ensemble pour permettre à un composant ancêtre d'injecter une dépendance dans tous ses descendants, quelle que soit la profondeur de la hiérarchie des composants, et cela prendra toujours effet à partir du moment où les relations en amont et en aval sont établies.
<div id="app"> <son></son> </div> let Son = Vue.extend({ template: '<h2>son</h2>', inject: { house: { default: '没房' }, car: { default: '没车' }, money: { // 长大工作了虽然有点钱 // 仅供生活费,需要向父母要 default: '¥4500' } }, created () { console.log(this.house, this.car, this.money) // -> '房子', '车子', '¥10000' } }) new Vue({ el: '#app', provide: { house: '房子', car: '车子', money: '¥10000' }, components: { Son } })
Pour plus d'exemples, vous pouvez vous référer au code source d'element-ui, dont un grand nombre utilise cette méthode
Recommandations associées : "tutoriel vue.js"
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quelques conseils pour développer des applications Android en utilisant Vue.js et le langage Kotlin Avec la popularité des applications mobiles et la croissance continue des besoins des utilisateurs, le développement d'applications Android attire de plus en plus l'attention des développeurs. Lors du développement d’applications Android, il est crucial de choisir la bonne pile technologique. Ces dernières années, les langages Vue.js et Kotlin sont progressivement devenus des choix populaires pour le développement d'applications Android. Cet article présentera quelques techniques de développement d'applications Android à l'aide du langage Vue.js et Kotlin, et donnera des exemples de code correspondants. 1. Configurer l'environnement de développement au début

Quelques conseils pour développer des applications de visualisation de données à l'aide de Vue.js et Python Introduction : Avec l'avènement de l'ère du big data, la visualisation de données est devenue une solution importante. Dans le développement d'applications de visualisation de données, la combinaison de Vue.js et Python peut offrir de la flexibilité et des fonctions puissantes. Cet article partagera quelques conseils pour développer des applications de visualisation de données à l'aide de Vue.js et Python, et joindra des exemples de code correspondants. 1. Introduction à Vue.js Vue.js est un JavaScript léger

Intégration du langage Vue.js et Objective-C, conseils et suggestions pour développer des applications Mac fiables Ces dernières années, avec la popularité de Vue.js dans le développement front-end et la stabilité d'Objective-C dans le développement d'applications Mac, les développeurs commencent. essayer de combiner les deux pour développer des applications Mac plus fiables et plus efficaces. Cet article présentera quelques conseils et suggestions pour aider les développeurs à intégrer correctement Vue.js et Objective-C et à développer des applications Mac de haute qualité. un

L'intégration des langages Vue.js et Lua, les meilleures pratiques et le partage d'expériences pour la construction d'un moteur frontal pour le développement de jeux Introduction : Avec le développement continu du développement de jeux, le choix du moteur frontal de jeu est devenu une décision importante. Parmi ces choix, le framework Vue.js et le langage Lua sont devenus le focus de nombreux développeurs. En tant que framework frontal populaire, Vue.js dispose d'un écosystème riche et de méthodes de développement pratiques, tandis que le langage Lua est largement utilisé dans le développement de jeux en raison de ses performances légères et efficaces. Cet article explorera comment

Comment utiliser PHP et Vue.js pour implémenter des fonctions de filtrage et de tri des données sur des graphiques. Dans le développement Web, les graphiques sont un moyen très courant d'afficher des données. À l'aide de PHP et Vue.js, vous pouvez facilement implémenter des fonctions de filtrage et de tri des données sur les graphiques, permettant aux utilisateurs de personnaliser l'affichage des données sur les graphiques, améliorant ainsi la visualisation des données et l'expérience utilisateur. Tout d’abord, nous devons préparer un ensemble de données que le graphique pourra utiliser. Supposons que nous ayons un tableau de données contenant trois colonnes : nom, âge et notes. Les données sont les suivantes : nom, âge, note, Zhang San, 1890 Li.

Intégration du langage Vue.js et Dart, pratique et compétences en développement pour créer des interfaces utilisateur d'applications mobiles sympas Introduction : Dans le développement d'applications mobiles, la conception et la mise en œuvre de l'interface utilisateur (UI) sont une partie très importante. Afin d'obtenir une interface d'application mobile intéressante, nous pouvons intégrer Vue.js au langage Dart et utiliser les puissantes fonctionnalités de liaison de données et de composants de Vue.js ainsi que la riche bibliothèque de développement d'applications mobiles du langage Dart pour créer une application mobile époustouflante. Interface utilisateur. Cet article vous montrera comment

Utilisez les langages Vue.js et Perl pour développer des robots d'exploration Web et des outils de récupération de données efficaces. Ces dernières années, avec le développement rapide d'Internet et l'importance croissante des données, la demande de robots d'exploration Web et d'outils de récupération de données a également augmenté. Dans ce contexte, c'est un bon choix de combiner le langage Vue.js et Perl pour développer des robots d'exploration Web et des outils de scraping de données efficaces. Cet article expliquera comment développer un tel outil à l'aide du langage Vue.js et Perl, et joindra des exemples de code correspondants. 1. Introduction au langage Vue.js et Perl

Comment utiliser Vue pour implémenter des effets de bulle de discussion de type QQ À l'ère sociale d'aujourd'hui, la fonction de discussion est devenue l'une des fonctions essentielles des applications mobiles et des applications Web. L'un des éléments les plus courants de l'interface de chat est la bulle de discussion, qui permet de distinguer clairement les messages de l'expéditeur et du destinataire, améliorant ainsi efficacement la lisibilité du message. Cet article expliquera comment utiliser Vue pour implémenter des effets de bulle de discussion de type QQ et fournira des exemples de code spécifiques. Tout d'abord, nous devons créer un composant Vue pour représenter la bulle de discussion. Le composant se compose de deux parties principales
