Maison >interface Web >Voir.js >Comparaison des solutions de gestion d'état dans la communication des composants Vue

Comparaison des solutions de gestion d'état dans la communication des composants Vue

WBOY
WBOYoriginal
2023-07-16 23:09:05767parcourir

Vue est un framework JavaScript populaire pour créer des interfaces utilisateur. La communication des composants est un aspect très important lors du développement d'applications Vue. Parmi eux, la gestion de l'État est un système de communication composant commun. Cet article présentera plusieurs solutions de gestion d'état couramment utilisées dans Vue et comparera leurs avantages et inconvénients. Dans le même temps, nous fournirons également quelques exemples de code pour aider les lecteurs à mieux comprendre.

1. Prop et Event (communication entre composants parent-enfant)
Prop et Event sont les méthodes de communication officiellement recommandées par Vue pour les composants parent-enfant. Grâce à Prop, le composant parent peut transmettre des données au composant enfant, et le composant enfant communique avec le composant parent en déclenchant des événements via la méthode $emit. Prop et Event sont une méthode de communication simple et intuitive, adaptée au transfert simple de données entre les composants parents et enfants.

Exemple de code :
Composant Parent :

<template>
  <ChildComponent :message="message" @notify="handleNotify"></ChildComponent>
</template>

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

export default {
  components: {
    ChildComponent
  },
  data() {
    return {
      message: 'Hello Vue!'
    }
  },
  methods: {
    handleNotify(newValue) {
      console.log(newValue)
    }
  }
}
</script>

Composant Enfant :

<template>
  <div>
    <p>{{ message }}</p>
    <button @click="handleClick">Notify</button>
  </div>
</template>

<script>
export default {
  props: {
    message: String
  },
  methods: {
    handleClick() {
      this.$emit('notify', 'Message from ChildComponent')
    }
  }
}
</script>

2. Vuex (gestion globale de l'état)
Vuex est la solution de gestion globale de l'état officiellement fournie par Vue. Il utilise un magasin global unique pour stocker tous les états des applications, et modifie et accède à cet état par le biais de mutations et d'actions. Vuex convient aux applications de taille moyenne à grande où plusieurs composants doivent partager leur état.

Exemple de code :

// store.js
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    message: 'Hello Vuex!'
  },
  mutations: {
    setMessage(state, payload) {
      state.message = payload
    }
  },
  actions: {
    updateMessage({ commit }, payload) {
      commit('setMessage', payload)
    }
  },
})

// parent.vue
<template>
  <div>
    <p>{{ $store.state.message }}</p>
    <button @click="updateMessage">Update Message</button>
  </div>
</template>

<script>
import { mapActions } from 'vuex'

export default {
  methods: {
    ...mapActions(['updateMessage']),    
  }
}
</script>

// child.vue
<template>
  <div>
    <p>{{ $store.state.message }}</p>
    <button @click="updateMessage">Update Message</button>
  </div>
</template>

<script>
import { mapActions } from 'vuex'

export default {
  methods: {
    ...mapActions(['updateMessage']),    
  }
}
</script>

3. Provide et Inject (communication entre composants entre niveaux)
Provide et Inject sont des fonctionnalités avancées de Vue qui permettent aux composants parents de fournir des données dans tous leurs composants descendants. Fournissez des données via Provide et injectez des données à partir de composants ancêtres via Inject. Provide et Inject conviennent à la communication de composants entre niveaux, mais ne conviennent pas à l'établissement de relations parent-enfant claires entre les composants.

Exemple de code :

// provider.vue
<template>
  <div>
    <provide :message="message">
      <child></child>
    </provide>
  </div>
</template>
  
<script>
export default {
  data() {
    return {
      message: 'Hello Provide and Inject!'
    }
  }
}
</script>

// child.vue
<template>
  <div>
    <p>{{ message }}</p>
  </div>
</template>
  
<script>
export default {
  inject: ['message']
}
</script>

Ce qui précède est une introduction et une comparaison de plusieurs solutions de gestion d'état couramment utilisées dans Vue. Selon différents scénarios et besoins, nous pouvons choisir une solution de gestion d'état appropriée pour mettre en œuvre la communication des composants. Prop et Event conviennent à une simple communication de composants parent-enfant, Vuex convient à la gestion globale de l'état et Provide et Inject conviennent à une communication de composants à plusieurs niveaux. J'espère que cet article aidera les lecteurs à choisir des solutions de gestion d'état dans 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!

Déclaration:
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