1. การแสดงผลแบบเงื่อนไขคืออะไร?
การแสดงผลแบบเงื่อนไข (Conditional Rendering) ใน Vue.js ช่วยให้คุณสามารถแสดงหรือซ่อนองค์ประกอบใน HTML ได้ตามเงื่อนไขที่กำหนด โดยใช้ Directive อย่าง v-if, v-else, v-else-if และ v-show เพื่อควบคุมการแสดงผล
2. การใช้ v-if
v-if ใช้สำหรับแสดงองค์ประกอบตามเงื่อนไขที่กำหนด
ตัวอย่าง:
<template>
<div>
<p v-if="isLoggedIn">Welcome back, User!</p>
<p v-else>Please log in.</p>
</div>
</template>
<script>
export default {
data() {
return {
isLoggedIn: false
};
}
};
</script>
ผลลัพธ์:
- ถ้า
isLoggedInเป็นtrueจะแสดงข้อความ "Welcome back, User!" - ถ้า
isLoggedInเป็นfalseจะแสดงข้อความ "Please log in."
3. การใช้ v-else และ v-else-if
v-elseใช้เมื่อเงื่อนไขv-ifไม่เป็นจริงv-else-ifใช้สำหรับเพิ่มเงื่อนไขเพิ่มเติม
ตัวอย่าง:
<template>
<div>
<p v-if="status === 'success'">Operation was successful!</p>
<p v-else-if="status === 'error'">There was an error.</p>
<p v-else>Unknown status.</p>
</div>
</template>
<script>
export default {
data() {
return {
status: 'error'
};
}
};
</script>
ผลลัพธ์:
- ถ้า
statusเป็นsuccessจะแสดง "Operation was successful!" - ถ้า
statusเป็นerrorจะแสดง "There was an error." - ถ้าไม่มีเงื่อนไขใดตรงกัน จะแสดง "Unknown status."
4. การใช้ v-show
v-show ใช้สำหรับควบคุมการแสดงผลขององค์ประกอบผ่าน CSS โดยการตั้งค่า display: none แทนการลบออกจาก DOM (เหมือนกับ v-if)
ตัวอย่าง:
<template>
<div>
<p v-show="isVisible">This text is visible.</p>
<button @click="toggleVisibility">Toggle Visibility</button>
</div>
</template>
<script>
export default {
data() {
return {
isVisible: true
};
},
methods: {
toggleVisibility() {
this.isVisible = !this.isVisible;
}
}
};
</script>
ผลลัพธ์:
- ถ้า
isVisibleเป็นtrueข้อความจะแสดง - ถ้า
isVisibleเป็นfalseข้อความจะถูกซ่อน
5. ความแตกต่างระหว่าง v-if และ v-show
| ลักษณะ | v-if | v-show |
|---|---|---|
| การทำงาน | ลบ/เพิ่มองค์ประกอบใน DOM | ซ่อน/แสดงด้วย CSS |
| การใช้งาน | เหมาะสำหรับการแสดงผลที่เปลี่ยนแปลงไม่บ่อย | เหมาะสำหรับการแสดงผลที่เปลี่ยนแปลงบ่อย |
| ประสิทธิภาพ | มีค่าใช้จ่ายในการสร้าง/ลบ DOM | มีค่าใช้จ่ายน้อยกว่า เพราะแค่เปลี่ยน display |
6. การใช้ Key ร่วมกับ v-if และ v-for
เมื่อใช้ v-if ร่วมกับ v-for ควรระบุ key ให้กับองค์ประกอบเพื่อเพิ่มประสิทธิภาพและป้องกันปัญหาในการอัปเดต DOM
ตัวอย่าง:
<template>
<ul>
<li v-for="item in items" :key="item.id" v-if="item.isVisible">
{{ item.name }}
</li>
</ul>
</template>
<script>
export default {
data() {
return {
items: [
{ id: 1, name: 'Item 1', isVisible: true },
{ id: 2, name: 'Item 2', isVisible: false },
{ id: 3, name: 'Item 3', isVisible: true }
];
};
}
};
</script>
ผลลัพธ์:
จะแสดงเฉพาะรายการที่ isVisible เป็น true
7. สรุป
ในบทนี้ คุณได้เรียนรู้เกี่ยวกับ:
- การใช้
v-if,v-else, และv-else-ifสำหรับการแสดงผลแบบเงื่อนไข - การใช้
v-showสำหรับการซ่อนและแสดงองค์ประกอบ - ความแตกต่างระหว่าง
v-ifและv-show - การใช้ Key ร่วมกับ
v-forและv-if
ในบทถัดไป เราจะศึกษาเกี่ยวกับการวนลูปข้อมูลด้วย v-for!