v-if
Misol
Shart "true" bo‘lsa, <div> elementini yaratish uchun v-if direktivasidan foydalanish.
<div v-if="createImgDiv">
<img src="/img_apple.svg" alt="apple">
<p>This is an apple.</p>
</div>
Misolni ishga tushirish »
Quyida ko‘proq misollarni ko‘ring.
Ta’rif va qo‘llanilishi
v-if direktivasi elementni shartli ravishda render qilish uchun ishlatiladi.
Elementda v-if ishlatilganda, undan keyin ifoda kelishi kerak:
- Agar ifoda qiymati "true" bo‘lsa, element va uning butun mazmuni DOMda yaratiladi.
- Agar ifoda qiymati "false" bo‘lsa, element yo‘q qilinadi.
Element v-if yordamida yoqib-o‘chirilganda:
- Element DOMga kirayotganda va undan chiqayotganda animatsiya qo‘llash uchun o‘rnatilgan
<Transition>komponentidan foydalanishimiz mumkin. - "mounted" va "unmounted" kabi lifecycle hook’lari ishga tushadi.
Eslatma: v-if va v-for’ni bitta tegda ishlatish tavsiya etilmaydi. Agar ikkala direktiva bitta tegda ishlatilsa, v-if v-for ishlatadigan o‘zgaruvchilarga murojaat qila olmaydi, chunki v-if’ning ustuvorligi v-for’nikidan yuqori.
Shartli render qilish uchun direktivalar
Ushbu umumiy ko‘rinish shartli render qilish uchun ishlatiladigan turli Vue direktivalari qanday birgalikda qo‘llanilishini tavsiflaydi.
| Direktiva | Tafsilotlar |
|---|---|
| v-if | Alohida yoki v-else-if va/yoki v-else bilan birga ishlatilishi mumkin. Agar v-if ichidagi shart "true" bo‘lsa, v-else-if yoki v-else hisobga olinmaydi. |
| v-else-if | v-if yoki boshqa v-else-if’dan keyin ishlatilishi kerak. Agar v-else-if ichidagi shart "true" bo‘lsa, undan keyin keladigan v-else-if yoki v-else hisobga olinmaydi. |
| v-else | Agar if operatorining birinchi qismi false bo‘lsa, shu qism bajariladi. U if operatorining eng oxirida, v-if va v-else-if’dan keyin joylashtirilishi kerak. |
Ko‘proq misollar
1-misol
v-if’ni shartli ifoda sifatida data xususiyati bilan, v-else bilan birgalikda ishlatish.
<p v-if="typewritersInStock">
in stock
</p>
<p v-else>
not in stock
</p>
O‘zingiz sinab ko‘ring »
2-misol
v-if’ni shartli ifoda sifatida taqqoslash tekshiruvi bilan, v-else bilan birgalikda ishlatish.
<p v-if="typewriterCount > 0">
in stock
</p>
<p v-else>
not in stock
</p>
O‘zingiz sinab ko‘ring »
3-misol
Ombordagi yozuv mashinkalari soniga qarab holat xabarini ko‘rsatish uchun v-if’ni v-else-if va v-else bilan birgalikda ishlatish.
<p v-if="typewriterCount>3">
In stock
</p>
<p v-else-if="typewriterCount>0">
Very few left!
</p>
<p v-else>
Not in stock
</p>
O‘zingiz sinab ko‘ring »
4-misol
v-if’ni shartli ifoda sifatida JavaScript’ning o‘rnatilgan (native) metodi bilan, v-else bilan birgalikda ishlatish.
<div id="app">
<p v-if="text.includes('pizza')">The text includes the word 'pizza'</p>
<p v-else>The word 'pizza' is not found in the text</p>
</div>
data() {
return {
text: 'I like taco, pizza, Thai beef salad, pho soup and tagine.'
}
}
O‘zingiz sinab ko‘ring »
5-misol
API’dan ma’lumotlar olinganda <div> tegini render qilish uchun v-if’dan foydalanish.
<template>
<h1>Example</h1>
<p>Click the button to fetch data with an HTTP request.</p>
<p>Each click generates an object with a random user from <a href="https://random-data-api.com/" target="_blank">https://random-data-api.com/</a>.</p>
<p>The robot avatars are lovingly delivered by <a href="http://Robohash.org" target="_blank">RoboHash</a>.</p>
<button @click="fetchData">Fetch data</button>
<div v-if="data" id="dataDiv">
<img :src="data.avatar" alt="avatar">
<pre>{{ data.first_name + " " + data.last_name }}</pre>
<p>"{{ data.employment.title }}"</p>
</div>
</template>
<script>
export default {
data() {
return {
data: null,
};
},
methods: {
async fetchData() {
const response = await fetch("https://random-data-api.com/api/v2/users");
this.data = await response.json();
},
}
};
</script>
<style>
#dataDiv {
width: 240px;
background-color: aquamarine;
border: solid black 1px;
margin-top: 10px;
padding: 10px;
}
#dataDiv > img {
width: 100%;
}
pre {
font-size: larger;
font-weight: bold;
}
</style>
Misolni ishga tushirish »
6-misol
mounted lifecycle hook’i ishga tushishi uchun v-if yordamida komponent yaratish.
CompOne.vue:
<template>
<h2>Component</h2>
<p>Right after this component is added to the DOM, the mounted() function is called and we can add code to that mounted() function. In this example, an alert popup box appears after this component is mounted.</p>
<p><strong>Note:</strong> The reason that the alert is visible before the component is visible is because the alert is called before the browser gets to render the component to the screen.</p>
</template>
<script>
export default {
mounted() {
alert("The component is mounted!");
}
}
</script>
App.vue:
<template>
<h1>The 'mounted' Lifecycle Hook</h1>
<button @click="this.activeComp = !this.activeComp">Create component</button>
<div>
<comp-one v-if="activeComp"></comp-one>
</div>
</template>
<script>
export default {
data() {
return {
activeComp: false
}
}
}
</script>
<style scoped>
div {
border: dashed black 1px;
border-radius: 10px;
padding: 20px;
margin: 10px;
width: 400px;
background-color: lightgreen;
}
</style>
Misolni ishga tushirish »
7-misol
Animatsiyalar ishga tushishi uchun <p> elementini yoqib-o‘chirishda v-if’dan foydalanish.
<template>
<h1>Add/Remove <p> Tag</h1>
<button @click="this.exists = !this.exists">{{btnText}}</button><br>
<Transition>
<p v-if="exists">Hello World!</p>
</Transition>
</template>
<script>
export default {
data() {
return {
exists: false
}
},
computed: {
btnText() {
if(this.exists) {
return 'Remove';
}
else {
return 'Add';
}
}
}
}
</script>
<style scoped>
.v-enter-from {
opacity: 0;
translate: -100px 0;
}
.v-enter-to {
opacity: 1;
translate: 0 0;
}
.v-leave-from {
opacity: 1;
translate: 0 0;
}
.v-leave-to {
opacity: 0;
translate: 100px 0;
}
p {
background-color: lightgreen;
display: inline-block;
padding: 10px;
transition: all 0.5s;
}
</style>
Misolni ishga tushirish »
Tegishli sahifalar
Vue darsligi: Vue v-if direktivasi
Vue ma’lumotnomasi: Vue v-else-if direktivasi
Vue ma’lumotnomasi: Vue v-else direktivasi
Vue darsligi: Vue animatsiyalari
Vue qo‘llanmasi: Vue lifecycle hook’lari
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
