Maison > interface Web > js tutoriel > Pourquoi « ceci » n'est-il plus défini dans les hooks de cycle de vie et les propriétés calculées de Vue.js ?

Pourquoi « ceci » n'est-il plus défini dans les hooks de cycle de vie et les propriétés calculées de Vue.js ?

DDD
Libérer: 2024-11-28 04:58:10
original
742 Les gens l'ont consulté

Why Does

VueJS : "this" non défini dans les hooks de cycle de vie et les propriétés calculées

Dans Vue.js, vous pouvez rencontrer des situations où l'accès à "this" " Le mot-clé dans les hooks de cycle de vie ou les propriétés calculées renvoie « non défini ». Cela se produit lorsque des fonctions fléchées sont utilisées.

Cause :

Fonctions fléchées () => {} liez le mot-clé "this" au contexte en dehors de l'instance Vue. Cela signifie que « ceci » dans une fonction fléchée fait référence à la portée parent, et non à l'instance Vue elle-même.

Exemple 1 :

mounted: () => {
  console.log(this); // logs "undefined"
}
Copier après la connexion

Dans cet exemple, la fonction de flèche utilisée pour le hook "monté" ne lie pas "this" à l'instance Vue.

Exemple 2 :

computed: {
  foo: () => { 
    return this.bar + 1; 
  }
}
Copier après la connexion

Ici, la propriété calculée utilise une fonction de flèche, ce qui provoque l'évaluation de la référence à "this.bar" comme étant indéfini, ce qui entraîne l'erreur "Impossible de lire la propriété 'bar' de non défini."

Solution :

Pour résoudre ce problème et accéder à la référence correcte à "ceci", utilisez les fonctions normales ou le raccourci ES5 :

Fonction régulière :

mounted: function () {
  console.log(this);
}
Copier après la connexion

Raccourci ES5 :

mounted() {
  console.log(this);
}
Copier après la connexion

En utilisant ces approches, vous vous assurez que « ceci » fait référence à l'instance Vue dans les hooks de cycle de vie et les propriétés calculées.

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