Dieser Artikel teilt Ihnen hauptsächlich die detaillierte Erklärung des bedingten Renderings von Vue.js. In String-Vorlagen, wie z. B. Handlers, müssen wir einen bedingten Block wie diesen schreiben:
<!-- Handlebars 模板 -->{{#if ok}} <h1>Yes</h1>{{/if}}
In Vue verwenden wir die v-if
-Direktive, um die gleiche Funktion zu erreichen:
<h1 v-if="ok">Yes</h1>
Sie können auch v-else
verwenden, um einen „else-Block“ hinzuzufügen:
<h1 v-if="ok">Yes</h1>No
# Verwenden Sie <template>
bedingte Rendering-Gruppierung für v-if
-Elemente.
Da v-if
eine Direktive ist, muss sie einem Element hinzugefügt werden. Was aber, wenn Sie mehrere Elemente austauschen möchten? Zu diesem Zeitpunkt können Sie ein <template>
-Element als unsichtbares Umhüllungselement behandeln und v-if
darauf verwenden. Das endgültige Rendering-Ergebnis wird ohne <template>
-Elemente sein.
<p id="example"> <template v-if='ok'> <h1>Title</h1> <p>Paragraph 1</p> <p>Paragraph 2</p> </template></p>
var vm = new Vue({ el: '#example', data: { ok: true } })
# v-else
und v-else-if
können durch die v-else
-Direktive dargestellt werden, um den „else-Block“ von < darzustellen 🎜>: < Das 🎜>v-if
<p v-if="Math.random() > 0.5"> Now you see me</p> <p v-else> Now you don't </p>
<p v-if="type === 'A'"> A </p> <p v-else-if="type === 'B'"> B </p> <p v-else-if="type === 'C'"> C </p> <p v-else> Not A/B/C </p>
oder v-else
folgen, sonst wird es nicht erkannt. v-if
v-else-if
Ähnlich wie
einem Element mit v-else
oder v-else-if
folgen. v-if
v-else-if
v-show
v-show
<h1 v-show="ok">Hello!</h1>
Schalten Sie einfach die CSS-Eigenschaftsanzeige des Elements um. v-show
v-show
weder das Element noch v-show
unterstützt. <template>
v-else
v-if vs v-show
v-if
v-if
Im Gegensatz dazu ist
v-show
Im Allgemeinen hat
einen höheren anfänglichen Rendering-Overhead hat. Daher ist es besser, v-if
zu verwenden, wenn Sie sehr häufig wechseln müssen; wenn sich die Bedingungen zur Laufzeit selten ändern, ist es besser, v-show
zu verwenden. v-show
v-if
v-if
<!-- Handlebars 模板 -->{{#if ok}} <h1>Yes</h1>{{/if}}
v-if
<h1 v-if="ok">Yes</h1>
v-else
<h1 v-if="ok">Yes</h1>No
Element 🎜> Bedingte Rendering-Gruppierung <template>
v-if
Da eine Direktive ist, muss sie einem Element hinzugefügt werden. Was aber, wenn Sie mehrere Elemente austauschen möchten? Zu diesem Zeitpunkt können Sie ein
als unsichtbares Umhüllungselement v-if
behandeln und <template>
darauf verwenden. Das endgültige Rendering-Ergebnis ist ohne v-if
-Elemente. <template>
<p id="example"> <template v-if='ok'> <h1>Title</h1> <p>Paragraph 1</p> <p>Paragraph 2</p> </template></p>
var vm = new Vue({ el: '#example', data: { ok: true } })
v-else
v-else-if
können durch die -Direktive dargestellt werden, um den „else-Block“ von < darzustellen 🎜>: < Das 🎜>
v-else
v-if
-Element muss unmittelbar auf das Element mit
<p v-if="Math.random() > 0.5"> Now you see me</p> <p v-else> Now you don't </p>
<p v-if="type === 'A'"> A </p> <p v-else-if="type === 'B'"> B </p> <p v-else-if="type === 'C'"> C </p> <p v-else> Not A/B/C </p>
Ähnlich wie v-else
muss auch v-if
einem Element mit v-else-if
oder
v-else
v-showv-else-if
v-if
Eine weitere Option zum Anzeigen von Elementen basierend auf Bedingungen ist die v-else-if
-Direktive.
immer gerendert werden und im DOM verbleiben. v-show
Schalten Sie einfach die CSS-Eigenschaftsanzeige des Elements um.
<h1 v-show="ok">Hello!</h1>
Beachten Sie, dass v-show
weder das Element v-show
noch
v-show
v-if vs v-show<template>
v-else
ist „echtes“ bedingtes Rendering, da es sicherstellt, dass Ereignis-Listener und Unterkomponenten innerhalb des bedingten Blocks während des Wechsels ordnungsgemäß zerstört und neu erstellt werden.
v-if
Im Gegensatz dazu ist
Im Allgemeinen hat v-if
einen höheren Switching-Overhead, während v-show
einen höheren anfänglichen Rendering-Overhead hat. Daher ist es besser, v-show
zu verwenden, wenn Sie sehr häufig wechseln müssen. Wenn sich die Bedingungen zur Laufzeit selten ändern, ist es besser, v-if
zu verwenden.
Verwandte Empfehlungen:
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des bedingten Renderings von Vue.j. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!