Maison > interface Web > Voir.js > Explication détaillée des principes et méthodes de communication des composants Vue

Explication détaillée des principes et méthodes de communication des composants Vue

WBOY
Libérer: 2023-07-18 18:52:49
original
1101 Les gens l'ont consulté

Explication détaillée des principes et des méthodes de communication des composants Vue

Vue est un framework de développement frontal populaire qui permet aux développeurs de créer des interfaces utilisateur interactives. Dans Vue, la communication des composants est un élément très important, qui peut réaliser le transfert de données et l'interaction entre les composants. Cet article analysera en détail les principes et les méthodes courantes de communication des composants Vue, et l'illustrera à travers des exemples de code.

1. Principe de communication des composants

Le principe de communication des composants de Vue est basé sur le concept de « flux de données unidirectionnel », c'est-à-dire que les données circulent des composants parents vers les composants enfants, et les composants enfants ne peuvent pas modifier directement les données du composant parent. Ce principe rend la relation entre les composants Vue plus claire et maintenable.

2. Props et $emit

La méthode de communication de composant la plus couramment utilisée dans Vue consiste à utiliser les accessoires et $emit. Les accessoires sont utilisés pour recevoir les données transmises par le composant parent, et $emit est utilisé pour envoyer des événements au composant parent. .

  1. Le composant parent transmet les données au composant enfant

Dans le composant parent, les données sont transmises sous la forme d'attributs de la balise du composant enfant :

// 父组件
<template>
  <div>
    <child-component :data="childData"></child-component>
  </div>
</template>

<script>
import ChildComponent from './ChildComponent';

export default {
  components: {
    ChildComponent
  },
  data() {
    return {
      childData: 'Hello World'
    }
  }
}
</script>

// 子组件
<template>
  <div>
    {{ data }}
  </div>
</template>

<script>
export default {
  props: ['data']
}
</script>
Copier après la connexion

Dans l'exemple ci-dessus, le composant parent lie l'attribut data de l'enfant composant via v-bind , les composants enfants le reçoivent via des accessoires.

  1. Le composant enfant envoie un événement au composant parent

Dans le composant enfant, un événement personnalisé est déclenché via $emit et les données sont transmises :

// 子组件
<template>
  <div>
    <button @click="sendMessage">发送消息</button>
  </div>
</template>

<script>
export default {
  methods: {
    sendMessage() {
      this.$emit('send', 'Hello World')
    }
  }
}
</script>

// 父组件
<template>
  <div>
    <child-component @send="receiveMessage"></child-component>
  </div>
</template>

<script>
import ChildComponent from './ChildComponent';

export default {
  components: {
    ChildComponent
  },
  methods: {
    receiveMessage(message) {
      console.log(message) // 输出:Hello World
    }
  }
}
</script>
Copier après la connexion

Dans l'exemple ci-dessus, le composant enfant déclenche un événement personnalisé événement appelé via l'événement d'envoi $emit et transmettre les données via les paramètres. Le composant parent écoute cet événement via @send et reçoit des données dans la fonction de rappel.

3. Fournir et injecter

En plus des accessoires et de $emit, Vue fournit également une méthode de communication de composants plus flexible, à savoir fournir et injecter. Il permet à un composant parent d'injecter une donnée ou une méthode commune dans tous les composants enfants.

  1. Le composant parent injecte des données dans le composant enfant

Dans le composant parent, les données sont fournies via provide :

// 父组件
<template>
  <div>
    <child-component></child-component>
  </div>
</template>

<script>
import ChildComponent from './ChildComponent';

export default {
  components: {
    ChildComponent
  },
  provide() {
    return {
      message: 'Hello World'
    }
  }
}
</script>

// 子组件
<template>
  <div>
    {{ message }}
  </div>
</template>

<script>
export default {
  inject: ['message']
}
</script>
Copier après la connexion

Dans l'exemple ci-dessus, le composant parent fournit une donnée nommée message via provide, et le composant enfant l'injecte via injecter et utiliser.

  1. Le composant enfant injecte des méthodes dans le composant parent

Dans le composant enfant, la méthode du composant parent est injectée via inject :

// 父组件
<template>
  <div>
    <child-component></child-component>
  </div>
</template>

<script>
import ChildComponent from './ChildComponent';

export default {
  components: {
    ChildComponent
  },
  methods: {
    showMessage() {
      console.log('Hello World')
    }
  }
}
</script>

// 子组件
<template>
  <div>
    <button @click="showMessage">显示消息</button>
  </div>
</template>

<script>
export default {
  inject: ['showMessage']
}
</script>
Copier après la connexion

Dans l'exemple ci-dessus, le composant enfant injecte la méthode showMessage du composant parent via inject et le bouton Appelé lors d'un événement de clic.

4. Résumé

Cet article analyse en détail les principes et les méthodes courantes de communication des composants Vue, y compris les props et $emit, provide et inject. Grâce à ces méthodes, nous pouvons implémenter le transfert de données et l'interaction entre les composants dans Vue. L'utilisation raisonnable des méthodes de communication des composants peut rendre le code plus clair et maintenable, et améliorer l'efficacité du développement. La maîtrise de ces méthodes est très importante pour les développeurs Vue.

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!

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