Maison > interface Web > Voir.js > Le guide complet de la cartographie dans Vuex

Le guide complet de la cartographie dans Vuex

青灯夜游
Libérer: 2020-10-07 14:19:57
avant
4799 Les gens l'ont consulté

Le guide complet de la cartographie dans Vuex

Vuex est une arme à double tranchant. Si elle est utilisée correctement, l'utilisation de Vue peut faciliter votre travail. Cela peut également encombrer votre code si vous n’y faites pas attention.

Avant d'utiliser Vuex, vous devez comprendre quatre concepts principaux : l'état, le getter, la mutation et l'action. Un simple état Vuex manipule les données au sein de ces concepts dans le magasin. Les cartes dans Vuex constituent un excellent moyen d'en récupérer des données.

Dans cet article, je vais montrer comment mapper des données dans le stockage Vuex. Si vous connaissez les bases de Vuex, ce contenu vous aidera à écrire du code plus propre et plus maintenable.

Cet article suppose que vous connaissez les bases de Vue.js et Vuex.

Qu'est-ce que la cartographie dans Vuex ?

Les cartes dans Vuex vous permettent de lier tout type de propriété en état (état, getter, mutation et action) à une propriété calculée dans un composant et d'utiliser directement les données en état.

Voici un exemple simple de magasin Vuex où les données de test sont en état.

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

const store = new Vuex.Store({
  state: {
    data: "test data"
  }
})
Copier après la connexion

Si vous souhaitez accéder à la valeur de data depuis l'état, vous pouvez effectuer ce qui suit dans un composant Vue.js.

computed: {
        getData(){
          return this.$store.state.data
        }
    }
Copier après la connexion

Le code ci-dessus fonctionne, mais il devient rapidement moche à mesure que la quantité de données d'état commence à augmenter.

Par exemple :

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

const store = new Vuex.Store({
  state: {
    user: {
        id:1,
        age:23,
        role:user
        data:{
          name:"user name",
          address:"user address"
        }
    },
    services: {},
    medical_requests: {},
    appointments: {},
    }
  }
})
Copier après la connexion

Pour obtenir le nom d'utilisateur d'un objet utilisateur dans l'état :

computed: {
        getUserName(){
          return this.$store.state.user.data.name
        }
    }
Copier après la connexion

Cela fait le travail, mais il existe un meilleur moyen.

Mapper l'état

Pour mapper l'état à une propriété calculée dans un composant Vue.js, vous pouvez exécuter la commande suivante.

import { mapGetters } from 'vuex';

export default{
    computed: {
        ...mapState([
            'user',
        ])
    }
}
Copier après la connexion

Vous avez maintenant accès à l'intégralité de l'objet utilisateur dans le composant.

Vous pouvez faire plus, comme ajouter des objets de l'état aux mapState méthodes.

import { mapGetters } from 'vuex';

export default{
    computed: {
        ...mapState([
            'user',
            'services'
        ])
    }
}
Copier après la connexion

Comme vous pouvez le voir, c'est beaucoup plus propre. Le nom d'utilisateur est facilement accessible via :

{{user.data.name}}
Copier après la connexion

services ainsi que de nombreuses autres valeurs d'objets et de cartes.

Avez-vous remarqué comment nous avons transmis le tableau à mapState() ? Si vous devez donner un nom différent à la valeur, vous pouvez transmettre un objet.

import { mapGetters } from 'vuex';

export default{
    computed: {
        ...mapState({
            userDetails:'user',
            userServices:'services'
        })
    }
}
Copier après la connexion

peut désormais référencer userDetails en appelant simplement user.

Quand cartographier l'ensemble de l'état

En règle générale, vous ne devez cartographier que s'il y a beaucoup de données dans l'état et que toutes sont nécessaires dans le composant.

Dans l'exemple ci-dessus, mapper l'intégralité de l'objet utilisateur n'a pas beaucoup de sens si nous n'avons besoin que d'une seule valeur (par exemple username).

Pendant le mappage, l'objet entier sera chargé en mémoire. En fait, nous ne voulons pas continuer à charger des données inutiles en mémoire, car cela serait redondant et affecterait les performances à long terme.

Map getter

La syntaxe du mappage getter est similaire à la fonction mapState.

import { mapGetters } from 'vuex'

export default {
  computed: {
    ...mapGetters([
      'firstCount',
      'anotherGetter',
    ])
  }
}
Copier après la connexion

Semblable à l'état de mappage, vous pouvez transmettre l'objet à la fonction mapGetters si vous prévoyez d'utiliser un nom différent.

import { mapGetters } from 'vuex'

export default {
  computed: {
    ...mapGetters([
      first:'firstCount',
      another:'anotherGetter',
    ])
  }
}
Copier après la connexion

Map mutation

Lors du mappage d'une mutation, vous pouvez utiliser la syntaxe suivante pour soumettre une mutation.

this.$store.commit('mutationName`)
Copier après la connexion

Par exemple :

import { mapMutations } from 'vuex'

export default {
  methods: {
    ...mapMutations([
      'search', // 映射 `this.increment()` 到 `this.$store.commit('search')`

      // `mapMutations` 也支持 payloads:
      'searchBy' // 映射 `this.incrementBy(amount)` 到 `this.$store.commit('searchBy', amount)`
    ]),
    ...mapMutations({
      find: 'search' // 映射 `this.add()` 到 `this.$store.commit('search')`
    })
  }
}
Copier après la connexion

Action de carte

L'action de cartographie est très similaire à la mutation de cartographie dans la mesure où elle peut également être effectuée dans une méthode. L'utilisation d'un mappeur liera this.$store.dispatch('actionName') au nom ou à la clé de l'objet dans le tableau du mappeur.

import { mapActions } from 'vuex'

export default {
  // ...
  methods: {
    ...mapActions([
      'increment', // 映射 `this.increment()` 到 `this.$store.dispatch('increment')`

      // `mapActions` 也支持 payloads:
      'incrementBy' // 映射 `this.incrementBy(amount)` 到 `this.$store.dispatch('incrementBy', amount)`
    ]),
    ...mapActions({
      add: 'increment' // 映射 `this.add()` 到 `this.$store.dispatch('increment')`
    })
  }
}
Copier après la connexion

Résumé

En voyant cela, vous devriez être capable d'apprendre :

  • Comment fonctionne la cartographie dans Vuex et pourquoi vous devriez l'utiliser Avec une profonde compréhension

  • être capable de mapper tous les composants du magasin Vuex (état, getter, mutation, action)
  • savoir quand le magasin doit être mappé

Adresse originale en anglais : https://blog.logrocket.com/a-complete-guide-to-mapping-in-vuex/

Auteur : Moses Anumadu

Recommandations associées :

Résumé des questions d'entretien avec vue frontale 2020 (avec réponses)

Recommandé Tutoriels vue : Les 5 dernières sélections de didacticiels vidéo vue.js en 2020

Pour plus de connaissances liées à la programmation, veuillez visiter : Introduction à la programmation ! !

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:segmentfault.com
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