Vue.js เริ่มต้น ตอน8 (Conditional Rendering v-if)

11 Jun 2018,
Share: 

สวัสดีครับ ตอนนี้เป็นตอนที่8 แล้วนะครับ จะเกี่ยวข้องกับ Conditional Rendering ซึ่งก็คือการใช้ if else นั่นเอง โดย Vue ก็ออกแบบมาให้เราใช้งานได้ง่ายครับ โดยเราสามารถใส่ if else ใน Attribute ได้เลย มาดูกันครับว่า Vue ทําอะไรได้บ้าง

v-if

เราสามารถใช้ v-if ได้เลยตามนี้ครับ

<h1 v-if="true">Yes</h1>

โดยที่ภายในจะเป็น Condition ของเราตามต้องการครับ ตัวอย่าง

<h1 v-if="Math.random() > 0.5">Yes</h1>

นอกเหนือจากนี้เราสามารถใช้ v-if กับ template ได้ด้วยดังนี้

<template v-if="ok">
  <h1>Title</h1>
  <p>Paragraph 1</p>
  <p>Paragraph 2</p>
</template>

v-else และ v-else-if

เราสามารถใช้ v-else หรือ v-else-if แบบนี้ได้ครับ

<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>
  Not A/B/C
</div>

การใช้งาน v-else และ v-else-if จะต้องเขียนติดกันนะครับ

Controlling Reusable Elements with key

ในกรณีที่เราใช้ v-if v-else หรือ v-else-if กับ component บางอย่างที่เป็นชนิดเดียวกัน Vue จะพยายามใช้ของเดิมเพื่อให้แสดงผลได้เร็วที่สุด อาจจะทําให้เกิดปัญหาขึ้นได้ดังตัวอย่างนี้

<template v-if="loginType === 'username'">
  <label>Username</label>
  <input placeholder="Enter your username">
</template>
<template v-else>
  <label>Email</label>
  <input placeholder="Enter your email address">
</template>

เมื่อมีการเปลี่ยนประเภทของการ login ข้อมูลใน input จะไม่เปลี่ยน วิธีแก้ปัญหาคือ การใช้ Key ตามตัวอย่างนี้ครับ

<template v-if="loginType === 'username'">
  <label>Username</label>
  <input placeholder="Enter your username" key="username-input">
</template>
<template v-else>
  <label>Email</label>
  <input placeholder="Enter your email address" key="email-input">
</template>

v-show

นอกจาก v-if Vue ยังมีอีกทางเลือกคือ v-show การใช้งานก็เหมือนกันครับ

<h1 v-show="true">Hello!</h1>

ความแตกต่างระหว่าง v-if และ v-show คือ v-show จะยังคง Code html อยู่แต่ไป set css ให้ show หรือ hide เท่านั้น ส่วน v-if ไม่มี Code html อยุ่เลย

v-show ไม่สามารถใช้กับ template ได้ครับ

สรุปคือเราสามารถจัดการ การแสดงผลใน Vue ได้อย่างง่าย โดยใช้ v-if หรือ v-show โดยส่วนใหญ่แล้วเราจะใช้ v-if มากกว่าครับ แล้วพบกันบทความหน้านะครับ

Suggestion blogs

Git คืออะไร

สวัสดีครับ Git เป็น Version Control ที่พัฒนาขึ้นมาเพื่อใช้เป็นเครื่องมือช่วยในการพัฒนา Software ซึ่งจะช่วยติดตาม ตรวจสอบการแก้ไข Source Code และ file ต่างๆ โดยสามารถตรวจสอบได้ทุกตัวอักษร ทุกบรรทัด และทุกไฟล์ ว่าใครเป็นคนแก้ไข แก้ไขอะไรไป แก้ไขวันที่ และเวลาเท่าไร นอกจากนี้ยังสามารถย้อนไปยังการแก้ไข ณ. จุดใดจุดหนึ่งได้อีกด้วย ยังไม่หมดแค่นี้ Git ยังสามารถรวมการแก้ไขจากหลายๆคนเข้าด้วยกันได้อีกด้วย (Merge)

messenger บนเว็บ เปิดให้ใช้แล้ว!!!

messenger ของ facebook เปิดให้ใช้บนเว็บแล้ว messenger.com เมื่อเข้ามาหน้าแรกจะให้เรา login ด้วย account facebook ถ้าเรา login กับเว็บ facebook แล้วสามารถ กดปุ่ม Continue as ... ได้เลย

ทําความรู้จักกับ Neo Pixel WS2812B

Neo Pixel WS2812B  คืออะไร?Neo Pixel WS2812B คือ หลอด LED ที่มีรูปร่างเป็นสี่เหลี่ยมแบนๆ ภายในจะประกอบไปด้วย Chip เบอร์ WS2812B และ LED ขนาดเล็กๆ 3 สี คือ RGB (Red, Green, Blue) โดยที่ Chip WS2812B จะทําหน้าที่ควบคุมการผสมสีของ LED RGB ให้เป็นสีต่างๆได้ถึง 16 ล้านสี หน้าตาจะประมาณรูปด้านล่าง


Copyright © 2019 - 2026 thiti.dev |  v1.61.0 |  Privacy policy | 

Build with ❤️ and Astro.

Github profile   Linkedin profile   Instagram   X profile   Nostr   Youtube channel   Telegram   Email contact   วงแหวนเว็บ