Table des matières
2 La priorité des deux" >2 La priorité des deux
Maison interface Web Questions et réponses frontales Quelle est la différence entre v-if et v-for dans vue

Quelle est la différence entre v-if et v-for dans vue

Dec 27, 2022 pm 06:48 PM
vue3 v-if v-for

La différence entre v-if et v-for : 1. Différentes fonctions. L'instruction v-if est utilisée pour restituer conditionnellement un élément de contenu. Cet élément de contenu ne sera rendu que lorsque l'expression de l'instruction renvoie un vrai. valeur ; while v La directive -for affiche une liste basée sur un tableau. 2. Les priorités sont différentes. v-for a une priorité plus élevée que v-if. Lors du jugement de if, v-for est jugé avant v-if.

Quelle est la différence entre v-if et v-for dans vue

L'environnement d'exploitation de ce tutoriel : système windows7, version vue3, ordinateur DELL G3.

Tout d'abord, il est clairement indiqué dans la documentation officielle qu'il n'est pas recommandé d'utiliser v-for et v-if ensemble.

1. Le rôle de v-if et v-for

L'instruction v-if est utilisée pour restituer conditionnellement un élément de contenu . Ce contenu ne sera rendu que lorsque l'expression de la commande renvoie une vraie valeur. La directive

v-for affiche une liste basée sur un tableau. La directive v-for nécessite une syntaxe spéciale de la forme item in items, où items est le tableau ou l'objet de données source, et item est l'alias de l'élément du tableau en cours d'itération.

Dans v-for, Il est recommandé de définir la valeur clé et de s'assurer que chaque valeur clé est unique, ce qui facilite l'optimisation de l'algorithme de comparaison.

La différence d'utilisation entre les deux est la suivante :

<div v-if="isShow" >123</div>
  
<li v-for="item in items" :key="item.id">
  {{ item.label }}
</li>
Copier après la connexion

2 La priorité des deux

En utilisation, v-for a une priorité plus élevée que v-if

v-if. et v- for sont toutes des instructions dans le système de modèle vue

Lorsque le modèle vue est compilé, convertira le système d'instructions en une fonction de rendu exécutable

Exemple
Écrivez une balise p et utilisez v-if et v-for à en même temps

<div id="app">
  <p v-if="isShow" v-for="item in items">
    {{ item.title }}
  </p>
</div>
Copier après la connexion

Créez une instance de vue et stockez les données isShow et items

const app = new Vue({
 el: "#app",
 data() {
  return {
   items: [
    { title: "foo" },
    { title: "baz" }]
  }
 },
 computed: {
  isShow() {
   return this.items && this.items.length > 0
  }
 }
})
Copier après la connexion

Le code de l'instruction du modèle sera généré dans la fonction de rendu La fonction de rendu peut être obtenue via app.$options.render

ƒ anonymous() {
 with (this) { return
  _c(&#39;div&#39;, { attrs: { "id": "app" } }, 
  _l((items), function (item) { return (isShow) ? _c(&#39;p&#39;, [_v("\n" + _s(item.title) + "\n")]) : _e() }), 0) }
}
Copier après la connexion

_l. est la fonction de rendu de liste de vue, à l'intérieur de la fonction Un jugement An if sera effectué
et une conclusion préliminaire est tirée : v-for a une priorité plus élevée que v-if

Ensuite, v-for et v-if sont placés dans des positions différentes labels

<div id="app">
  <template v-if="isShow">
    <p v-for="item in items">{{item.title}}</p>
  </template>
</div>
Copier après la connexion

puis la fonction de rendu est générée

ƒ anonymous() {
 with(this){return
  _c(&#39;div&#39;,{attrs:{"id":"app"}},
  [(isShow)?[_v("\n"),
  _l((items),function(item){return _c(&#39;p&#39;,[_v(_s(item.title))])})]:_e()],2)}
}
Copier après la connexion

À ce moment-là, nous pouvons voir que lorsque v-for et v-if agissent sur des balises différentes, ils sont d'abord jugés puis rendus dans la liste

Vérifions la vue code source
Emplacement du code source : vue-devsrccompilercodegenindex.js

export function genElement (el: ASTElement, state: CodegenState): string {
 if (el.parent) {
  el.pre = el.pre || el.parent.pre
 }
 if (el.staticRoot && !el.staticProcessed) {
  return genStatic(el, state)
 } else if (el.once && !el.onceProcessed) {
  return genOnce(el, state)
 } else if (el.for && !el.forProcessed) {
  return genFor(el, state)
 } else if (el.if && !el.ifProcessed) {
  return genIf(el, state)
 } else if (el.tag === &#39;template&#39; && !el.slotTarget && !state.pre) {
  return genChildren(el, state) || &#39;void 0&#39;
 } else if (el.tag === &#39;slot&#39;) {
  return genSlot(el, state)
 } else {
  // component or element
  ...
}
Copier après la connexion

In Lors d'un jugement if, v-for est jugé avant v-if. Le résultat du jugement final est que v-for a une priorité plus élevée que v-if. v-if et v-for sont utilisés sur le même élément en même temps, ce qui entraîne un gaspillage de performances (chaque rendu bouclera d'abord puis effectuera un jugement conditionnel)

Si vous évitez cette situation, imbriquez le modèle (page) dans la couche externe (le rendu ne génère pas de nœuds dom), le jugement v-si est effectué sur cette couche, puis la boucle v-for est effectuée en interne

<template v-if="isShow">
  <p v-for="item in items">
</template>
Copier après la connexion

Si la condition apparaît à l'intérieur de la boucle, les éléments qui n'ont pas besoin d'être affiché peut être filtré à l'avance via l'attribut calculé
computed: {
  items: function() {
   return this.list.filter(function (item) {
    return item.isShow
   })
  }
}
Copier après la connexion
Description du cas :

Raison : v-for a une priorité plus élevée que v-if Il doit parcourir l'ensemble du tableau à chaque fois, provoquant des calculs inutiles et affectant. performances.

Par exemple, en utilisant v-for sur la page Parcourez 100 balises li, mais affichez uniquement le contenu de la balise li avec index=97 et masquez le reste.

Même si une seule donnée doit être utilisée dans 100 listes, elle parcourra l'ensemble du tableau.

 <ul>
    <li v-for="item in list" v-if="item.actived">{{item.name}}</li>
 </ul>
Copier après la connexion

Solution : Utiliser calculated

<ul>
    <li v-for="item in activeList">{{item.name}}</li>
</ul>

computed: {
  activeList() {
    return this.list.filter(val => {
      return val.actived;
    });
  }
},
Copier après la connexion
[Recommandations associées : Tutoriel vidéo vuejs,

Développement web front-end

]

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 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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment actualiser le contenu partiel de la page dans Vue3 Comment actualiser le contenu partiel de la page dans Vue3 May 26, 2023 pm 05:31 PM

Pour réaliser un rafraîchissement partiel de la page, il suffit d'implémenter le re-rendu du composant local (dom). Dans Vue, le moyen le plus simple d'obtenir cet effet est d'utiliser la directive v-if. Dans Vue2, en plus d'utiliser l'instruction v-if pour restituer le dom local, nous pouvons également créer un nouveau composant vierge. Lorsque nous devons actualiser la page locale, accéder à cette page de composant vierge, puis y revenir. la garde beforeRouteEnter dans la page d’origine vierge. Comme le montre la figure ci-dessous, comment cliquer sur le bouton d'actualisation dans Vue3.X pour recharger le DOM dans la zone rouge et afficher l'état de chargement correspondant. Puisque la garde dans le composant dans la syntaxe scriptsetup dans Vue3.X n'a ​​que o

Comment sélectionner un avatar et le recadrer dans Vue3 Comment sélectionner un avatar et le recadrer dans Vue3 May 29, 2023 am 10:22 AM

L'effet final est d'installer le composant VueCropper filaddvue-cropper@next. La valeur d'installation ci-dessus est pour Vue3 ou si vous souhaitez utiliser d'autres méthodes de référence, veuillez visiter son adresse officielle npm : tutoriel officiel. Il est également très simple de le référencer et de l'utiliser dans un composant. Il suffit d'introduire le composant correspondant et son fichier de style. Je ne le référence pas globalement ici, mais j'introduis uniquement import{userInfoByRequest}from'../js/api. ' dans mon fichier de composant import{VueCropper}from'vue-cropper&.

Comment utiliser definitionCustomElement pour définir des composants dans Vue3 Comment utiliser definitionCustomElement pour définir des composants dans Vue3 May 28, 2023 am 11:29 AM

Utilisation de Vue pour créer des éléments personnalisés WebComponents est un nom collectif pour un ensemble d'API Web natives qui permettent aux développeurs de créer des éléments personnalisés réutilisables (customelements). Le principal avantage des éléments personnalisés est qu’ils peuvent être utilisés avec n’importe quel framework, même sans. Ils sont idéaux lorsque vous ciblez des utilisateurs finaux susceptibles d'utiliser une pile technologique frontale différente, ou lorsque vous souhaitez dissocier l'application finale des détails d'implémentation des composants qu'elle utilise. Vue et WebComponents sont des technologies complémentaires et Vue offre un excellent support pour l'utilisation et la création d'éléments personnalisés. Vous pouvez intégrer des éléments personnalisés dans des applications Vue existantes ou utiliser Vue pour créer

Conseils pour utiliser v-for pour implémenter le tri dynamique dans Vue Conseils pour utiliser v-for pour implémenter le tri dynamique dans Vue Jun 25, 2023 am 09:18 AM

Vue est un framework JavaScript moderne qui nous aide à créer facilement des pages Web dynamiques et des applications complexes. Dans Vue, vous pouvez facilement créer des structures de boucles en utilisant v-for pour restituer les données de manière itérative. Dans certains scénarios spécifiques, nous pouvons également utiliser v-for pour implémenter le tri dynamique. Cet article présentera comment utiliser v-for pour implémenter des techniques de tri dynamique dans Vue, ainsi que quelques scénarios et exemples d'application. 1. Utilisez v-for pour simplifier les choses

Comment utiliser vue3+ts+axios+pinia pour obtenir un rafraîchissement insensé Comment utiliser vue3+ts+axios+pinia pour obtenir un rafraîchissement insensé May 25, 2023 pm 03:37 PM

vue3+ts+axios+pinia réalise un rafraîchissement insensé 1. Téléchargez d'abord aiXos et pinianpmipinia dans le projet--savenpminstallaxios--save2 Encapsuler la requête axios-----Télécharger js-cookienpmiJS-cookie-s//Introduire aixosimporttype{AxiosRequestConfig , AxiosResponse}de"axios";importaxiosfrom'axios';import{ElMess

Erreur Vue : La directive v-if ne peut pas être utilisée correctement pour le rendu conditionnel. Comment le résoudre ? Erreur Vue : La directive v-if ne peut pas être utilisée correctement pour le rendu conditionnel. Comment le résoudre ? Aug 19, 2023 pm 01:09 PM

Erreur Vue : La directive v-if ne peut pas être utilisée correctement pour le rendu conditionnel. Comment le résoudre ? Dans le développement de Vue, la directive v-if est souvent utilisée pour afficher un contenu spécifique dans la page en fonction de conditions. Cependant, nous pouvons parfois rencontrer un problème lorsque nous utilisons correctement l'instruction v-if, nous ne pouvons pas obtenir les résultats attendus et recevons un message d'erreur. Cet article décrit une solution à ce problème et fournit un exemple de code pour faciliter la compréhension. 1. Description du problème Habituellement, nous utilisons la directive v-if dans le modèle Vue pour déterminer si

Explication détaillée de la fonction v-for dans Vue3 : solution parfaite pour lister le rendu des données Explication détaillée de la fonction v-for dans Vue3 : solution parfaite pour lister le rendu des données Jun 18, 2023 am 09:57 AM

Avec les progrès continus de la technologie numérique, le développement front-end est devenu un métier de plus en plus populaire. Vue3 est devenu le premier choix de plus en plus de développeurs en raison de sa simplicité, de sa facilité d'utilisation, de son efficacité et de sa stabilité. Parmi elles, la fonction v-for est l'une des fonctions principales utilisées pour le rendu des données de liste dans Vue3. Dans cet article, nous fournirons une explication détaillée de la fonction v-for dans Vue3, afin que vous puissiez mieux l'utiliser pour résoudre des problèmes de développement réels. 1. Syntaxe de base La syntaxe de base de la fonction v-for est la suivante : &lt;divv-

Comment utiliser createApp dans vue3 Comment utiliser createApp dans vue3 May 22, 2023 pm 11:40 PM

Définition de la fonction La fonction createApp est définie dans le fichier packages/runtime-dom/src/index.ts exportconstcreateApp=((...args)=>{constapp=ensureRenderer().createApp(...args)if(__DEV__){ injectNativeTagCheck (app)injectCompilerOptionsCheck(app)}const{mount}=appapp.mount=(containerOrSelector

See all articles