Maison > interface Web > Voir.js > Comment implémenter la communication entre composants non parent-enfant dans Vue ?

Comment implémenter la communication entre composants non parent-enfant dans Vue ?

王林
Libérer: 2023-07-18 23:03:28
original
1865 Les gens l'ont consulté

Vue est un framework JavaScript populaire pour créer des interfaces utilisateur. Lors du développement de Vue, la communication entre les composants est un sujet important. Vue propose diverses façons d'implémenter la communication entre les composants, notamment la communication entre composants parent-enfant, la communication entre composants frères et sœurs et la communication entre composants non parent-enfant. Cet article se concentrera sur la façon d'implémenter la communication entre composants non parent-enfant dans Vue et fournira des exemples de code correspondants.

Dans Vue, la communication entre composants non parent-enfant peut être réalisée via le bus d'événements, vuex et provide/inject. La mise en œuvre de chaque méthode sera présentée en détail ci-dessous.

  1. Event Bus
    Event Bus est un moyen de mettre en œuvre la communication des composants via un gestionnaire d'événements central. Dans Vue, vous pouvez utiliser une instance Vue comme bus d'événements pour envoyer et recevoir des événements. Les étapes spécifiques sont les suivantes :

(1) Créez une instance de bus d'événements :

// EventBus.js
import Vue from 'vue'
export const EventBus = new Vue()
Copier après la connexion

(2) Dans le composant qui envoie l'événement, utilisez la méthode $emit pour envoyer l'événement :

// ComponentA.vue
import { EventBus } from './EventBus.js'
export default {
  methods: {
    handleClick() {
      EventBus.$emit('event-name', eventData)
    }
  }
}
Copier après la connexion

(3) Dans le composant qui reçoit l'événement, utilisez la méthode $on pour écouter les événements :

// ComponentB.vue
import { EventBus } from './EventBus.js'
export default {
  mounted() {
    EventBus.$on('event-name', (eventData) => {
      // 处理事件
    })
  }
}
Copier après la connexion
  1. vuex
    vuex est la bibliothèque officielle de gestion d'état de Vue, qui fournit un mécanisme de stockage et de gestion centralisés de l'état de tous les composants de l'application . Les composants peuvent partager l'état et implémenter la communication entre composants non parent-enfant via vuex. Les étapes spécifiques sont les suivantes :

(1) Installez et configurez vuex :

npm install vuex
Copier après la connexion
// store.js
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment(state) {
      state.count++
    }
  },
  actions: {
    increment(context) {
      context.commit('increment')
    }
  }
})
Copier après la connexion

(2) Dans les composants qui doivent partager l'état, utilisez mapState, mapMutations et mapActions pour obtenir et modifier l'état :

// ComponentA.vue
import { mapState, mapMutations } from 'vuex'
export default {
  computed: {
    ...mapState(['count'])
  },
  methods: {
    ...mapMutations(['increment'])
  }
}
Copier après la connexion
// ComponentB.vue
import { mapState, mapActions } from 'vuex'
export default {
  computed: {
    ...mapState(['count'])
  },
  methods: {
    ...mapActions(['increment'])
  }
}
Copier après la connexion
  1. provide /inject
    provide /inject est une nouvelle méthode de communication de composant non parent-enfant introduite dans la version Vue2.2.0. L'objectif de transmettre des données du composant parent aux composants descendants est atteint grâce à l'option provide et à l'option inject. Les étapes spécifiques sont les suivantes :

(1) Dans le composant parent, utilisez l'option provide pour fournir des données :

// ParentComponent.vue
export default {
  provide() {
    return {
      dataName: this.data
    }
  },
  data() {
    return {
      data: 'some data'
    }
  }
}
Copier après la connexion

(2) Dans le composant enfant, utilisez l'option inject pour injecter des données :

// ChildComponent.vue
export default {
  inject: ['dataName']
}
Copier après la connexion

Ce qui précède Voici comment implémenter la non-injection dans Vue. Plusieurs façons de communiquer entre les composants parent-enfant et des exemples de code correspondants sont fournis. Choisir la méthode appropriée pour mettre en œuvre la communication des composants en fonction des besoins réels peut améliorer la maintenabilité et l'évolutivité du code. J'espère que cet article pourra vous aider à comprendre et à appliquer la communication des composants 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!

É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