sous-composant vue clear

WBOY
Libérer: 2023-05-24 09:42:07
original
2386 Les gens l'ont consulté

Vue est un framework JavaScript moderne qui fournit de nombreux outils et fonctionnalités de développement pratiques, qui peuvent considérablement améliorer notre efficacité de développement. Dans Vue, les composants sont au cœur de la création d'interfaces d'application et les composants peuvent être divisés en composants parents et composants enfants. Dans certains cas, nous devons effacer les composants enfants dans le composant parent. Cet article présentera quelques méthodes pour effacer les composants enfants dans Vue.

Méthode 1 : utiliser la directive v-if

La directive v-if dans Vue est utilisée pour restituer conditionnellement un élément ou un composant. En définissant la valeur de v-if sur false, nous pouvons supprimer complètement le composant du DOM. Par conséquent, lorsque nous devons effacer un sous-composant, nous pouvons l'envelopper dans une instruction v-if. Lorsque nous devons effacer le sous-composant, définissez sa valeur v-if sur false.

Par exemple, nous avons un composant parent Parent et un composant enfant Child :

<template>
  <div>
    <button @click="clearChildComponent">清除子组件</button>
    <child v-if="isRenderChild" />
  </div>
</template>

<script>
import Child from './Child.vue';

export default {
  components: {
    Child,
  },
  data() {
    return {
      isRenderChild: true,
    };
  },
  methods: {
    clearChildComponent() {
      this.isRenderChild = false;
    },
  },
};
</script>
Copier après la connexion

Dans le composant parent, nous contrôlons si le composant Child est rendu en définissant la valeur de isRenderChild. Lorsque nous cliquons sur le bouton "Effacer le composant enfant", la valeur est définie sur false et le composant enfant est complètement supprimé du DOM.

Méthode 2 : Utiliser des composants dynamiques

Vue fournit une fonctionnalité - les composants dynamiques, qui nous permet de restituer dynamiquement des composants via des noms de composants. Cette fonctionnalité nous aide également à effacer les composants enfants. La méthode d'implémentation spécifique est que lorsque le sous-composant doit être effacé, remplacez-le par un composant vide, et le sous-composant peut être complètement supprimé.

Dans cette méthode, nous devons créer un composant vide NoComponent pour effacer les composants enfants. Ensuite, lorsque vous devez effacer le sous-composant, définissez le nom du sous-composant sur NoComponent.

Par exemple, nous avons un composant parent Parent et un composant enfant Child :

<template>
  <div>
    <button @click="clearChildComponent">清除子组件</button>
    <component :is="currentComponent" />
  </div>
</template>

<script>
import Child from './Child.vue';
import NoComponent from './NoComponent.vue';

export default {
  components: {
    Child,
    NoComponent,
  },
  data() {
    return {
      currentComponent: 'Child',
    };
  },
  methods: {
    clearChildComponent() {
      this.currentComponent = 'NoComponent';
    },
  },
};
</script>
Copier après la connexion

Dans le composant parent, nous rendons dynamiquement le composant via la balise composant. Lorsque nous devons effacer le sous-composant, nous définissons la valeur de currentComponent sur NoComponent pour supprimer complètement le sous-composant du DOM.

Méthode 3 : Utiliser v-if et les instructions clés

Nous avons mentionné plus tôt que l'utilisation de l'instruction v-if peut supprimer complètement les sous-composants du DOM. Cependant, dans les applications réelles, nous pouvons avoir besoin d'ajouter et de supprimer à plusieurs reprises des composants enfants dans le composant parent. À ce stade, l'utilisation directe de l'instruction v-if peut entraîner des problèmes de performances. Car chaque fois que vous ajoutez ou supprimez un sous-composant, vous devez remonter le composant, ce qui consomme beaucoup de performances. Par conséquent, nous pouvons utiliser v-if conjointement avec la directive key pour effacer les sous-composants.

Dans Vue, la directive key est utilisée pour identifier le caractère unique d'un composant. Lorsque la valeur clé d'un composant change, Vue désinstalle immédiatement l'instance de composant d'origine, puis remonte la nouvelle instance de composant en fonction de la nouvelle valeur. Par conséquent, nous pouvons effacer le sous-composant en modifiant dynamiquement la valeur clé du sous-composant.

Par exemple, nous avons un composant parent Parent et un composant enfant Child :

<template>
  <div>
    <button @click="clearChildComponent">清除子组件</button>
    <child :key="componentKey" />
  </div>
</template>

<script>
import Child from './Child.vue';

export default {
  components: {
    Child,
  },
  data() {
    return {
      componentKey: 1,
    };
  },
  methods: {
    clearChildComponent() {
      this.componentKey += 1;
    },
  },
};
</script>
Copier après la connexion

Dans le composant parent, nous définissons la valeur clé du composant Child sur ComponentKey. Lorsque nous cliquons sur le bouton "Effacer le composant enfant", la valeur de composantKey sera augmentée de 1, supprimant ainsi complètement le composant enfant du DOM.

Résumé

Cet article présente trois méthodes pour effacer les sous-composants dans Vue, à savoir l'utilisation de la directive v-if, les composants dynamiques et la combinaison des directives v-if et key. Dans le développement réel, nous pouvons choisir la méthode appropriée en fonction des besoins. Il convient de noter que lorsque vous utilisez l'instruction v-if pour effacer des sous-composants, vous devez vous assurer qu'aucune opération asynchrone n'est en cours dans les sous-composants, sinon des problèmes pourraient survenir. Lors de l'utilisation de composants dynamiques en combinaison avec v-if et des instructions clés, une attention particulière doit être accordée au caractère unique de la valeur clé pour éviter le problème des composants rendus de manière répétée ou non complètement désinstallés.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal