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

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

Susan Sarandon
Libérer: 2024-11-28 14:06:14
original
624 Les gens l'ont consulté

Why is

Valeur inattendue non définie pour "this" dans les composants Vue.js

Lors de la construction de composants Vue.js, accès à "this" dans les hooks de cycle de vie ou les propriétés calculées peuvent donner des résultats « non définis » inattendus. Les fonctions fléchées, désignées par la syntaxe "() => {}", modifient la liaison de "this" en dehors du contexte de l'instance Vue.

Lifecycle Hooks

Dans l'exemple fourni :

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

La fonction flèche lie "this" à une portée en dehors de l'instance Vue, conduisant à un "indéfini" évaluation.

Propriétés calculées

De même, dans les propriétés calculées :

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

La fonction flèche crée une liaison différente pour "ceci", ce qui entraîne dans la zone "Impossible de lire la propriété 'bar' de non définie" erreur.

Solution

Pour résoudre ce problème et garantir la référence correcte à « ceci » en tant qu'instance Vue, envisagez d'utiliser les techniques suivantes :

  1. Fonction régulière : Utilisez une syntaxe de fonction régulière, comme démontré par :
mounted: function () {
  console.log(this);
}
Copier après la connexion
  1. ECMAScript 5 Shorthand : Alternativement, vous pouvez utiliser le raccourci de la fonction ECMAScript 5 :
mounted() {
  console.log(this);
}
Copier après la connexion

En employant ces méthodes, vous pouvez établir la liaison appropriée de « ceci » dans les composants Vue.js, garantissant ainsi l'accessibilité aux propriétés et méthodes du composant. attendu.

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