Jednou z klíčových vlastností Vue jsou jeho výkonné direktivy, které zjednodušují úkoly, jako je podmíněné vykreslování. Pokud znáte frameworky jako Angular nebo Laravel, mohou vám direktivy Vue připadat povědomé.
Tento článek se zaměřuje na podmíněné vykreslování ve Vue, konkrétně na v-if, v-else, v-else-if a v-show.
Nastavení Vue aplikace
Pro začátek budete potřebovat základní nastavení Vue.js. Pro tuto demonstraci použijeme Vue 3 a Composition API. Zde je jednoduchý příklad:
<!DOCTYPE html><html><head> <title>Vue.js Tutoriál</title> <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script></head><body><div id="app"> <!-- Obsah bude vložen sem --></div><script> const { createApp } = Vue; createApp({ // Nastavení Vue půjde sem }).mount('#app');</script></body></html>
Použití v-if, v-else a v-else-if
Podmíněné vykreslování ve Vue je podobné podmínkám if, else if a else v JavaScriptu. Vue používá direktivu v-if k vyhodnocení podmínek a vykreslení DOM prvků na základě výsledku.
Příklad: Kontrola stavu uživatele
Zde je příklad, kde kontrolujeme, zda je uživatel online nebo offline:
Na začátku se zobrazí status “Online” se zeleným tlačítkem. Když kliknete na tlačítko “Změnit status”, status se bude přepínat mezi červeným a zeleným tlačítkem. Pokud je status “Online”, zobrazí se zelené tlačítko, jinak červené tlačítko.
Použití v-else-if
Můžete přidat více podmínek pomocí v-else-if. Například:
• Pokud je uživatel “Online”, zobrazí se zelené tlačítko
• Jinak se zobrazí červené tlačítko
Můžeme jít dál a použít v-if, v-else-if a v-else. To je podobné jako if, else if a else v programovacích jazycích. Tímto způsobem náhodně vybíráme status z “Online”, “Offline” a “Unknown”.
Vue vyžaduje, aby v-if, v-else a v-else-if byly přiléhavé v DOM. Vložení nesouvisejících elementů mezi ně může narušit logiku a vést k chybám.
Porušení v-if s p tagem
Použití v-show
Další direktiva, v-show, nabízí podobný výsledek jako v-if, ale funguje jinak. Zatímco v-if odstraňuje prvky z DOM, pokud nejsou splněny podmínky, v-show přepíná jejich viditelnost pomocí CSS vlastnosti display: none.
Příklad:
<div id="app"><p v-show="true">Zobrazit tuto zprávu</p><p v-show="false">Nezobrazovat tuto zprávu</p></div>
• První p tag bude vždy viditelný
• Druhý p tag bude v DOM, ale zůstane skrytý
Příklad použití v-show
Klíčový rozdíl:
Používejte v-show, pokud často přepínáte viditelnost, a v-if, pokud je potřeba prvky dynamicky přidávat nebo odebírat pro optimalizaci výkonu.