Maison interface Web Voir.js Que dois-je faire si « TypeError : Cannot read property 'xxx' of undefined » apparaît lors de l'utilisation de vuex dans une application Vue ?

Que dois-je faire si « TypeError : Cannot read property 'xxx' of undefined » apparaît lors de l'utilisation de vuex dans une application Vue ?

Aug 18, 2023 pm 03:27 PM
vue vuex typeerror

在Vue应用中使用vuex时出现“TypeError: Cannot read property 'xxx' of undefined”怎么办?

Lors de l'utilisation de vuex dans les applications Vue, nous rencontrons souvent l'erreur "TypeError : Impossible de lire la propriété 'xxx' de undefined". L'apparition de cette erreur est généralement liée à la structure logique du code, à la définition du module vuex et de son état, à la méthode appelante, etc. Cet article explique en détail comment dépanner et résoudre cette erreur lorsqu'elle se produit.

1. Causes et dépannage des erreurs

1. Aucune fonction auxiliaire telle que mapState n'est utilisée

Lors de l'utilisation de vuex, nous devons utiliser des fonctions auxiliaires telles que mapState, mapGetters, mapMutations, mapActions, etc. magasin. Si nous n'utilisons pas ces fonctions auxiliaires, mais écrivons manuellement le code pour lire l'état dans le magasin, des erreurs telles que "TypeError : Impossible de lire la propriété 'xxx' de undefined" se produiront facilement.

Méthode de dépannage : vérifiez s'il existe un code manuscrit permettant de lire l'état du magasin dans le code. Si tel est le cas, envisagez d'utiliser une fonction auxiliaire pour le remplacer.

2. Accéder aux modules non définis ou aux états correspondants

Si nous définissons un module dans Vuex et utilisons un certain état dans le module dans un composant, mais que le module défini n'est pas chargé ou que l'état est chargé S'il n'est pas initialisé, un une erreur telle que « TypeError : Impossible de lire la propriété 'xxx' de non définie" se produira.

Méthode de dépannage : vérifiez si le composant accède correctement au module vuex requis et assurez-vous que le module a été défini et initialisé avant d'utiliser le composant.

3. Utilisez store.state.xxx et le magasin lui-même n'est pas défini

Si vous utilisez store.state.xxx dans un composant et que le magasin lui-même n'est pas défini, "TypeError : Impossible de lire la propriété 'xxx' de non défini" apparaîtra erreur.

Méthode de dépannage : vérifiez le code qui fait référence au magasin dans le composant pour vous assurer que le magasin a été correctement instancié.

4. La requête asynchrone n'a pas renvoyé de données, provoquant l'échec du statut d'accès

Si nous effectuons une requête asynchrone dans Vuex, mais accédons au statut avant que la requête ne renvoie des données, "TypeError : Impossible de lire la propriété 'xxx' apparaîtra d'erreur "indéfinie".

Méthode de dépannage : assurez-vous que les données de requête asynchrone pertinentes ont été obtenues avant d'accéder au statut vuex.

2. Solution

1. Utilisez des fonctions auxiliaires telles que mapState

Utilisez des fonctions auxiliaires telles que mapState dans l'attribut calculé du composant, comme indiqué ci-dessous :

import { mapState } from 'vuex'

export default {
  computed: {
    ...mapState({
      xxx: state => state.xxx
    })
  }
}
Copier après la connexion

2. Accédez correctement au module et à l'état correspondant

Make. assurez-vous que le module est dans Le composant a été défini et initialisé avant :

const myModule = {
  state: {
    xxx: 'xxx'
  },
  mutations: {},
  actions: {},
  getters: {}
}

export default new Vuex.Store({
  modules: {
    myModule
  }
})
Copier après la connexion

Utilisez un état dans le module dans le composant :

import { mapState } from 'vuex'

export default {
  computed: {
    ...mapState({
      xxx: state => state.myModule.xxx
    })
  }
}
Copier après la connexion

3. Assurez-vous que le magasin a été correctement instancié

Initialisez correctement le magasin dans le principal. js :

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

Vue.use(Vuex)

new Vue({
  store,
  //...
})
Copier après la connexion

4. Assurez-vous que les données de la requête asynchrone ont été obtenues avant d'accéder au statut vuex

comme indiqué ci-dessous :

import { mapState } from 'vuex'

export default {
  computed: {
    ...mapState({
      xxx: state => state.xxx
    })
  },
  created() {
    // 异步请求获取数据
    this.$http.get('/xxx').then(res => {
      // 将数据提交到vuex store中
      this.$store.commit('SET_X', res.data)
    }).catch(err => {})
  }
}
Copier après la connexion

Résumé :

Ce qui précède est le dépannage et la solution lorsque vous rencontrez le "TypeError: Cannot lire la propriété 'xxx' de l'erreur "indéfinie". Dans le développement quotidien, nous devons toujours vérifier si la référence au statut vuex est correcte. S'il y a des problèmes, nous devons les résoudre le plus rapidement possible pour garantir la stabilité et la fiabilité de l'application.

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 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

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Comment utiliser les graphiques électroniques dans Vue Comment utiliser les graphiques électroniques dans Vue May 09, 2024 pm 04:24 PM

Comment utiliser les graphiques électroniques dans Vue

Le rôle de l'export par défaut dans vue Le rôle de l'export par défaut dans vue May 09, 2024 pm 06:48 PM

Le rôle de l'export par défaut dans vue

Comment utiliser la fonction map dans vue Comment utiliser la fonction map dans vue May 09, 2024 pm 06:54 PM

Comment utiliser la fonction map dans vue

La différence entre event et $event dans vue La différence entre event et $event dans vue May 08, 2024 pm 04:42 PM

La différence entre event et $event dans vue

La différence entre l'exportation et l'exportation par défaut dans vue La différence entre l'exportation et l'exportation par défaut dans vue May 08, 2024 pm 05:27 PM

La différence entre l'exportation et l'exportation par défaut dans vue

Le rôle du monté en vue Le rôle du monté en vue May 09, 2024 pm 02:51 PM

Le rôle du monté en vue

Pour quels scénarios les modificateurs d'événements dans vue peuvent-ils être utilisés ? Pour quels scénarios les modificateurs d'événements dans vue peuvent-ils être utilisés ? May 09, 2024 pm 02:33 PM

Pour quels scénarios les modificateurs d'événements dans vue peuvent-ils être utilisés ?

Que sont les crochets en vue Que sont les crochets en vue May 09, 2024 pm 06:33 PM

Que sont les crochets en vue

See all articles