Maison > interface Web > js tutoriel > Pourquoi « ceci » n'est-il pas défini dans les composants Vue.js et les propriétés calculées à l'aide des fonctions fléchées ?

Pourquoi « ceci » n'est-il pas défini dans les composants Vue.js et les propriétés calculées à l'aide des fonctions fléchées ?

Patricia Arquette
Libérer: 2024-11-18 12:05:02
original
843 Les gens l'ont consulté

Why is

Pourquoi la référence à « ceci » n'est-elle pas définie dans les composants et les propriétés calculées de Vue.js ?

Dans Vue.js, définir les composants et l'utilisation des propriétés calculées implique de travailler avec le mot-clé « this ». Cependant, les développeurs rencontrent souvent le problème où « ceci » est évalué comme « non défini » dans certains scénarios. Cet article vise à clarifier pourquoi cela se produit et à proposer des solutions.

Lors de l'utilisation de fonctions fléchées (par exemple, () => {}) dans des hooks de cycle de vie (tels que montés et mis à jour) ou des propriétés calculées, la valeur de « ceci » peut différer de l'instance Vue prévue. La documentation Vue.js déconseille explicitement d'utiliser les fonctions fléchées dans de tels contextes. Au lieu de cela, les développeurs doivent utiliser des fonctions régulières ou la syntaxe abrégée ECMAScript 5 pour garantir que « ceci » fait référence à l'instance Vue de manière appropriée.

Prenons l'exemple d'un composant :

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

Dans ce cas, la fonction flèche () => {} lie « ceci » à un contexte différent en dehors du composant Vue. Par conséquent, l'accès aux propriétés ou aux méthodes en utilisant 'this' en dehors de la fonction échouera.

De même, dans une propriété calculée :

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

L'évaluation de la valeur de la propriété calculée à l'aide de la fonction flèche () = > {} entraînera également que « ceci » ne soit pas défini. Cela entraîne l'erreur "Impossible de lire la propriété 'bar' d'undéfini."

Pour corriger ce problème, des fonctions JavaScript classiques ou le raccourci ECMAScript 5 peuvent être utilisés :

mounted: function () {
  console.log(this); // correctly logs the Vue instance
}
Copier après la connexion
mounted() {
  console.log(this); // also correctly logs the Vue instance
}
Copier après la connexion

Ces exemples démontrent comment les fonctions régulières ou le raccourci ECMAScript 5 lient de manière appropriée « ceci » à l'instance du composant Vue, résolvant ainsi le problème où « ceci » est évalué à « non défini ».

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