


Quelle est la différence entre v-if et v-for dans vue
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.
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>
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>
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 } } })
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('div', { attrs: { "id": "app" } }, _l((items), function (item) { return (isShow) ? _c('p', [_v("\n" + _s(item.title) + "\n")]) : _e() }), 0) } }
_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>
puis la fonction de rendu est générée
ƒ anonymous() { with(this){return _c('div',{attrs:{"id":"app"}}, [(isShow)?[_v("\n"), _l((items),function(item){return _c('p',[_v(_s(item.title))])})]:_e()],2)} }
À 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 === 'template' && !el.slotTarget && !state.pre) { return genChildren(el, state) || 'void 0' } else if (el.tag === 'slot') { return genSlot(el, state) } else { // component or element ... }
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>
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 connexionDescription du cas :
computed: { items: function() { return this.list.filter(function (item) { return item.isShow }) } }
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>
<ul> <li v-for="item in activeList">{{item.name}}</li> </ul> computed: { activeList() { return this.list.filter(val => { return val.actived; }); } },
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

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

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

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

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

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

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

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
