Koşullu Render
Koşullu Render
v-if
v-if
direktifi, bir bloğu koşullu olarak render etmek için kullanılır. Bloc, sadece direktifin ifadesi doğru bir değer döndüğünde render edilecektir.
<h1 v-if="awesome">Vue harika!</h1>
v-else
v-else
direktifini kullanarak v-if
için bir "else bloğu" belirtebilirsiniz:
<button @click="awesome = !awesome">Değiştir</button>
<h1 v-if="awesome">Vue harika!</h1>
<h1 v-else>Ah hayır 😢</h1>
Değiştir Vue harika! Ah hayır 😢
Bir v-else
elemanı, bir v-if
veya v-else-if
elemanının hemen ardından gelmelidir; aksi takdirde tanınmayacaktır.
v-else-if
v-else-if
, adından da anlaşılacağı gibi, v-if
için bir "else if bloğu" işlevi görür. Birden fazla kez zincirleme de yapılabilir:
<div v-if="type === 'A'">
A
</div>
<div v-else-if="type === 'B'">
B
</div>
<div v-else-if="type === 'C'">
C
</div>
<div v-else>
A/B/C Değil
</div>
t-else
ile benzer şekilde, bir v-else-if
elemanı, bir v-if
veya bir v-else-if
elemanının hemen ardından gelmelidir.
v-if
üzerinde ``
v-if
, bir direktif olduğundan, tek bir elemana takılması gerekir. Ama birden fazla elementi değiştirmek istersek ne yapmalıyız? Bu durumda, v-if
'i görünmez bir sarıcı görevi gören bir elementi üzerinde kullanabiliriz. Nihai render edilen sonuç,
elementini içermeyecektir.
<template v-if="ok">
<h1>Başlık</h1>
<p>Paragraf 1</p>
<p>Paragraf 2</p>
</template>
v-else
ve v-else-if
de `` üzerinde kullanılabilir.
v-show
Bir elementi koşullu olarak görüntülemek için başka bir seçenek ise v-show
direktifidir. Kullanımı büyük ölçüde aynıdır:
<h1 v-show="ok">Merhaba!</h1>
Fark şu ki, v-show
ile kullanılan bir element her zaman render edilir ve DOM'da kalır; v-show
yalnızca elementin display
CSS özelliğini değiştirir.
v-show
, `elementini desteklemez ve
v-else` ile çalışmaz.
v-if
vs. v-show
Dikkat! v-if
, gerçek "koşullu" renderdir çünkü olay dinleyicilerini ve koşullu bloğun içerisindeki alt bileşenleri düzgün bir şekilde yok eder ve değiştirdiğinde yeniden oluşturur.
v-if
ayrıca tembel'dir: eğer koşul başlangıç render'ında yanlışsa, hiçbir şey yapmaz. Koşullu blok, koşul ilk kez doğru olduğunda render edilmeyecek.
Buna karşılık, v-show
çok daha basittir - element her zaman render edilir, başlangıç koşuluna bakılmaksızın CSS tabanlı değişim yapılır.
Genel anlamda, v-if
daha yüksek değiştirme maliyetine sahipken, v-show
daha yüksek başlangıç render maliyetine sahiptir. Bu nedenle, eğer bir şeyi çok sık değiştirecekseniz v-show
kullanmayı tercih edin, ve koşul çalışma zamanında değişmeyecekse v-if
kullanmayı tercih edin.
v-if
ile v-for
::: warning Nota
Aynı eleman üzerinde v-if
ve v-for
kullanılması tavsiye edilmez çünkü örtük öncelik nedeniyle sorunlar çıkarabilir. Detaylar için stil kılavuzuna
bakın.
:::
v-if
ve v-for
aynı eleman üzerinde kullanıldığında, önce v-if
değerlendirilecektir. Detaylar için liste render kılavuzuna
bakın.