Chỉ thị v-show
Tìm hiểu cách hiển thị hoặc không hiển thị một phần tử bằng v-show
.
v-show
rất dễ sử dụng vì điều kiện được ghi ngay trong thuộc tính thẻ HTML.
Khả năng hiển thị có điều kiện
Lệnh v-show
ẩn một phần tử khi điều kiện là 'false' bằng cách đặt giá trị thuộc tính CSS 'display' thành 'none'.
Sau khi viết v-show
dưới dạng thuộc tính HTML, chúng ta phải đưa ra điều kiện để quyết định có hiển thị thẻ hay không.
Cú pháp
<div v-show="showDiv">This div tag can be hidden</div>
Trong đoạn mã trên, 'showDiv' biểu thị thuộc tính dữ liệu boolean Vue với giá trị thuộc tính là 'true' hoặc 'false'. Nếu 'showDiv' là 'true' thì thẻ div được hiển thị và nếu 'false' thì thẻ không được hiển thị.
Ví dụ
Chỉ hiển thị phần tử <div> nếu thuộc tính showDiv được đặt thành 'true'.
<div id="app">
<div v-show="showDiv">This div tag can be hidden</div>
</div>
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
const app = Vue.createApp({
data() {
return {
showDiv: true
}
}
})
app.mount('#app')
</script>
Hãy tự mình thử » v-show
so với v-if
Sự khác biệt giữa v-show
và v-if
là v-if
tạo (render) phần tử tùy theo điều kiện, nhưng với v-show
phần tử đã được tạo sẵn thì v-show
chỉ thay đổi khả năng hiển thị của nó.
Do đó, tốt hơn nên sử dụng v-show
khi chuyển đổi chế độ hiển thị của một đối tượng, vì trình duyệt sẽ dễ dàng thực hiện hơn và có thể dẫn đến phản hồi nhanh hơn và trải nghiệm người dùng tốt hơn.
Lý do sử dụng v-if
thay vì v-show
là vì v-if
có thể được sử dụng với v-else-if
và v-else
.
Trong ví dụ bên dưới, v-show
và v-if
được sử dụng riêng biệt trên hai phần tử <div> khác nhau, nhưng dựa trên cùng một thuộc tính Vue. Bạn có thể mở ví dụ và kiểm tra mã để thấy rằng v-show
giữ phần tử <div> và chỉ đặt thuộc tính hiển thị CSS thành 'none', nhưng v-if
thực sự phá hủy phần tử <div>.
Ví dụ
Chỉ hiển thị hai phần tử <div> nếu thuộc tính showDiv được đặt thành 'true'. Nếu thuộc tính showDiv được đặt thành 'false' và chúng tôi kiểm tra trang ví dụ bằng trình duyệt, chúng tôi có thể thấy rằng phần tử <div> với v-if
bị hủy, nhưng phần tử <div> với v-show
chỉ có thuộc tính CSS display được đặt thành 'không'.
<div id="app">
<div v-show="showDiv">Div tag with v-show</div>
<div v-if="showDiv">Div tag with v-if</div>
</div>
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
const app = Vue.createApp({
data() {
return {
showDiv: true
}
}
})
app.mount('#app')
</script>
Hãy tự mình thử »