Maison> interface Web> Voir.js> le corps du texte

Erreur Vue : L'attribut calculé ne peut pas être utilisé correctement, comment le résoudre ?

PHPz
Libérer: 2023-08-18 14:55:53
original
2283 Les gens l'ont consulté

Erreur Vue : Lattribut calculé ne peut pas être utilisé correctement, comment le résoudre ?

Erreur Vue : L'attribut calculé ne peut pas être utilisé correctement, comment le résoudre ?

Dans le développement de Vue, l'attribut calculé est une fonctionnalité très couramment utilisée. Cela nous permet de déclarer des propriétés calculées dans l'instance Vue, et lorsque les données dépendantes changent, la valeur de la propriété calculée sera automatiquement mise à jour. Cependant, nous pouvons parfois rencontrer des problèmes et ne pas pouvoir utiliser correctement l'attribut calculé. Cet article présentera les problèmes courants et les solutions correspondantes.

Problème 1 : L'attribut calculé n'est pas mis à jour correctement

Lorsque nous déclarons un attribut calculé, Vue écoutera automatiquement les dépendances associées. Lorsque les dépendances changent, il recalculera et mettra à jour la valeur de l'attribut calculé. Mais parfois, l'attribut calculé n'est pas mis à jour correctement, ce qui peut être dû aux raisons suivantes :

  1. Les dépendances ne sont pas déclarées correctement : Assurez-vous que les dépendances correctes sont utilisées dans la fonction de l'attribut calculé. déclaré, Vue ne pourra pas détecter les changements.
  2. Problèmes avec les données de type référence : Si l'attribut calculé dépend d'une donnée de type référence (comme un objet ou un tableau), et que la valeur de ce type de référence n'est pas modifiée, l'attribut calculé ne peut pas être mis à jour correctement. Parce que Vue surveille les changements de référence, pas les changements de propriétés internes.

Ce qui suit est un exemple de code qui montre la raison pour laquelle la propriété calculée n'est pas mise à jour correctement et la solution :

// 定义一个Vue实例 var vm = new Vue({ data: { list: [1, 2, 3] }, computed: { sum: function() { console.log('computed属性被计算了'); return this.list.reduce(function(total, num) { return total + num; }, 0); } } }); vm.sum; // 输出:6 // 问题一:computed属性没有正确更新 vm.list.push(4); vm.sum; // 输出:6,预期输出:10 // 解决办法一:使用Vue.set()方法添加元素 vm.list.push(4); Vue.set(vm.list, vm.list.length, 5); vm.sum; // 输出:15,问题解决
Copier après la connexion

Problème 2 : La propriété calculée signale une erreur "TypeError : Impossible de lire la propriété 'xxx' de undefined"

Quand nous sommes dans la propriété calculée Lors de l'accès aux propriétés d'un objet, vous recevrez parfois un message d'erreur similaire à l'erreur ci-dessus. Cela peut être dû au fait que les données sur lesquelles repose la propriété calculée n'ont pas été définies, ce qui rend la propriété illisible.

La façon de résoudre ce problème est de s'assurer que les données dépendantes ont été correctement définies. Vous pouvez utiliser des instructions telles que v-if ou v-show dans l'attribut calculé pour juger les données dépendantes. Le calcul ne sera effectué que lorsque les conditions seront remplies pour éviter des situations indéfinies.

// 定义一个Vue实例 var vm = new Vue({ data: { user: undefined }, computed: { greeting: function() { if (this.user) { return 'Hello, ' + this.user.name; } else { return 'Welcome!'; } } }, methods: { getUserData: function() { // 模拟异步获取用户数据 setTimeout(function() { vm.user = { name: 'Tom' }; }, 1000); } } }); vm.greeting; // 输出:'Welcome!' vm.getUserData(); setTimeout(function() { vm.greeting; // 输出:'Hello, Tom',问题解决 }, 2000);
Copier après la connexion

Grâce aux exemples de codes des deux questions ci-dessus, nous pouvons mieux comprendre et résoudre les problèmes qui peuvent être rencontrés lors de l'utilisation d'attributs calculés. Dans le développement réel, lorsque des problèmes sont rencontrés, ils peuvent être étudiés et résolus grâce aux idées ci-dessus pour améliorer la lisibilité et la robustesse du code. J'espère que cet article vous sera utile !

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!

Étiquettes associées:
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