Maison  >  Article  >  interface Web  >  Comment gérer l'erreur « [Vue warn] : un ou plusieurs rejetés »

Comment gérer l'erreur « [Vue warn] : un ou plusieurs rejetés »

王林
王林original
2023-08-18 10:27:30621parcourir

如何处理“[Vue warn]: Discarded one or more”错误

Comment gérer l'erreur "[Vue warn] : un ou plusieurs rejetés"

Pendant le processus de développement à l'aide de Vue.js, nous pouvons rencontrer des invites d'avertissement, l'un des avertissements courants est "[Vue warn] : J'en ai rejeté un ou plusieurs". Cet avertissement apparaît généralement lorsqu'un composant utilise la directive v-if ou v-show, ce qui signifie que Vue.js a supprimé certains éléments pendant le processus de rendu. Cet article explique la cause de cet avertissement et comment y remédier.

Il y a généralement deux raisons d'avertissement :

  1. Condition non remplie : lorsque les conditions de la directive v-if ou v-show ne sont pas remplies, Vue supprimera l'élément du DOM. Lorsque la condition est à nouveau remplie, Vue restituera l'élément. Au cours de ce processus, si Vue détecte qu'il existe une liaison d'état ou d'événement sur l'élément, il émettra cet avertissement.
  2. Le sous-composant est détruit : l'avertissement peut également apparaître lorsqu'un sous-composant est détruit. S'il y a des opérations asynchrones ou du code d'exécution retardé à l'intérieur du sous-composant, ces codes peuvent toujours être exécutés lorsque le sous-composant est détruit. Si ces codes utilisent la liaison d'état ou d'événement de l'instance Vue, un avertissement apparaîtra.

Afin de résoudre cet avertissement, nous pouvons utiliser les méthodes suivantes :

  1. Utilisez v-if au lieu de v-show : Lorsque les conditions ne sont pas remplies, utilisez v-if au lieu de v-show pour éviter l'avertissement. . v-if rendra l'élément si la condition est remplie et le supprimera complètement du DOM si la condition n'est pas remplie. L’inconvénient est qu’il peut y avoir des problèmes de performances lors de changements fréquents de conditions.
  2. Utilisez l'attribut key : dans la directive v-for, l'utilisation de l'attribut key peut aider Vue à suivre avec précision l'état de chaque élément. De cette façon, lorsque les conditions changent, Vue restituera les éléments correspondants au lieu de les recréer.
<template>
  <div>
    <div v-for="item in items" :key="item.id">{{ item.name }}</div>
  </div>
</template>
  1. Annuler les opérations asynchrones lorsque le composant est détruit : lorsque le composant enfant est détruit, nous pouvons utiliser la fonction hook beforeDestroy de Vue pour annuler d'éventuelles opérations asynchrones ou nettoyer les liaisons d'événements.
export default {
  beforeDestroy() {
    // 取消定时器
    clearTimeout(this.timer);
    // 取消事件监听
    window.removeEventListener('resize', this.handleResize);
  },
  created() {
    // 异步操作
    this.timer = setTimeout(() => {
      // do something
    }, 1000);
    // 事件监听
    window.addEventListener('resize', this.handleResize);
  }
}
  1. Utilisez la méthode $destroy de Vue pour détruire les composants enfants : si le composant enfant a vraiment besoin d'effectuer des opérations de nettoyage lorsqu'il est détruit, nous pouvons appeler manuellement la méthode $destroy dans le composant parent pour détruire le composant enfant. Cela déclenchera la fonction de hook beforeDestroy du composant enfant et supprimera le composant enfant du DOM.
export default {
  methods: {
    destroyChildComponent() {
      this.$refs.childComponent.$destroy();
    }
  }
}

Pour résumer, la clé pour gérer l'erreur « [Vue warn] : un ou plusieurs rejetés » est de comprendre la cause de l'avertissement et de prendre les mesures appropriées pour le résoudre. Nous pouvons utiliser v-if au lieu de v-show pour éviter les avertissements lorsque les conditions ne sont pas remplies, utiliser des attributs clés pour suivre l'état des éléments, annuler les opérations asynchrones et nettoyer les liaisons d'événements, et appeler manuellement la méthode $ destroy pour détruire les composants enfants. . Grâce à ces méthodes, nous pouvons améliorer les performances de l'application et éviter cet avertissement.

J'espère que cet article pourra vous aider à gérer les erreurs « [Vue warn] : un ou plusieurs rejetés » et à mieux utiliser Vue.js pour développer des applications.

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!

Déclaration:
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