Maison > interface Web > js tutoriel > Pourquoi \'this\' n'est-il pas défini dans les fonctions fléchées de Vue.js ?

Pourquoi \'this\' n'est-il pas défini dans les fonctions fléchées de Vue.js ?

Linda Hamilton
Libérer: 2024-11-15 22:14:03
original
964 Les gens l'ont consulté

Why is

VueJS : Résoudre le problème non défini de « ce »

Les fonctions fléchées peuvent être un piège dans VueJS, conduisant à des valeurs non définies inattendues. En effet, les fonctions fléchées héritent du contexte de leur parent, plutôt que de se lier à l'instance Vue.

Hooks de cycle de vie

Lors de l'utilisation de fonctions fléchées dans des hooks de cycle de vie comme montés, cela ne fait pas référence à l'instance Vue. Au lieu de cela, il fait référence au contexte parent, qui est généralement un élément HTML ou le composant Vue qui a déclenché le hook monté.

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

Propriétés calculées

Fonctions fléchées dans les propriétés calculées conduisent également à des valeurs indéfinies. Comme ils héritent du contexte parent, cela ne fait pas référence à l'instance de Vue.

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

Cela entraîne l'erreur "Uncaught TypeError : Impossible de lire la propriété 'bar' de undefined".

Solution

Pour résoudre ce problème, utilisez des fonctions normales ou des raccourcis de fonctions ECMAScript 5 au lieu de la flèche fonctions :

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

En utilisant ces méthodes, vous pouvez vous assurer que cela fait toujours référence à l'instance Vue, fournissant le comportement attendu 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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal