Vue Conditional Rendering
Mục lục
1. Diagram
- v-if vs v-show Overview
- v-if Lifecycle
- v-if / v-else-if / v-else Chain
- v-if on
<template> - Performance Comparison
2. Tổng quan
3. v-if
4. v-else
5. v-else-if
6. v-if on <template>
7. v-show
8. v-if vs v-show
9. v-if with v-for
10. Common Patterns
11. Best Practices
12. Kết luận
1. Diagram
v-if vs v-show Overview
v-if: Condition is true
|
v
Render element
|
v
Element in DOM
v-show: Condition is true
|
v
Element is displayed
|
v
Element in DOM (display: none)
v-if Lifecycle
v-if:
- Created: No
- Mounted: Yes (if condition true)
- Updated: Yes (if condition changes)
- Destroyed: Yes (if condition false)
v-show:
- Created: Yes
- Mounted: Yes
- Updated: Yes
- Destroyed: No
v-if / v-else-if / v-else Chain
v-if="condition1"
<!-- block 1 -->
v-else-if="condition2"
<!-- block 2 -->
v-else
<!-- block 3 -->
v-if on ``</h2>
```
```
Performance Comparison
```
v-if:
- Adds/removes elements in DOM
- More overhead for toggling
v-show:
- Toggles CSS display property
- No DOM manipulation overhead
```
---
2. Tổng quan
- Conditional rendering trong Vue.js cho phép hiển thị hoặc ẩn phần tử dựa trên điều kiện.
- Sử dụng các chỉ thị như `v-if`, `v-else-if`, `v-else`, và `v-show`.
---
3. v-if
- `v-if` thêm hoặc xóa phần tử khỏi DOM dựa trên điều kiện.
- Cú pháp: `Nội dung`
- Khi `condition` là `true`, phần tử được thêm vào DOM. Ngược lại, nó sẽ bị xóa.
---
4. v-else
- `v-else` luôn đi kèm với `v-if` hoặc `v-else-if`.
- Cú pháp: `Nội dung 1 Nội dung 2`
- Khi `condition1` là `false`, "Nội dung 2" sẽ được hiển thị.
---
5. v-else-if
- `v-else-if` cho phép kiểm tra nhiều điều kiện.
- Cú pháp: `Nội dung 1 Nội dung 2`
- Nếu `condition1` là `false` và `condition2` là `true`, "Nội dung 2" sẽ được hiển thị.
---
6. v-if on ``</h1>
- Có thể sử dụng `v-if` trên thẻ `` để nhóm nhiều phần tử.
- Cú pháp:
```html
Phần tử 1
Phần tử 2
```
- Tất cả các phần tử bên trong `` sẽ được thêm hoặc xóa cùng nhau.
---
7. v-show
- `v-show` chỉ thay đổi thuộc tính CSS `display` của phần tử.
- Cú pháp: `Nội dung`
- Khi `condition` là `true`, phần tử sẽ hiển thị. Ngược lại, nó sẽ ẩn đi nhưng vẫn còn trong DOM.
---
8. v-if vs v-show
When to Use v-if
- Sử dụng `v-if` khi:
- Cần thêm hoặc xóa phần tử khỏi DOM.
- Có nhiều điều kiện phức tạp.
When to Use v-show
- Sử dụng `v-show` khi:
- Chỉ cần ẩn hoặc hiển thị phần tử mà không thay đổi DOM.
- Cần tối ưu hiệu suất khi điều kiện thay đổi thường xuyên.
Performance Comparison
- `v-if` có thể chậm hơn do phải thêm/xóa phần tử trong DOM.
- `v-show` nhanh hơn trong trường hợp chỉ cần ẩn hiển thị, nhưng có thể tốn băng thông hơn nếu nội dung phức tạp.
---
9. v-if with v-for
- Tránh sử dụng `v-if` và `v-for` trên cùng một phần tử.
- Nên tách riêng thành các phần tử khác nhau để tránh nhầm lẫn và lỗi không mong muốn.
---
10. Common Patterns
- Hiển thị danh sách với điều kiện:
```html
<div v-for="item in items" :key="item.id" v-if="item.visible">
</div>
```
- Thay thế nội dung khi không có dữ liệu:
```html
<div v-for="item in items" :key="item.id">
</div>
Không có dữ liệu
```
---
11. Best Practices
- Nên sử dụng `v-if` và `v-show` một cách hợp lý để tối ưu hiệu suất.
- Tránh lạm dụng điều kiện phức tạp trong template.
- Sử dụng computed properties để xử lý logic phức tạp.
---
12. Kết luận
- Hiểu rõ cách hoạt động của `v-if`, `v-else-if`, `v-else`, và `v-show` giúp viết code hiệu quả và tối ưu hơn.
- Lựa chọn chỉ thị phù hợp với yêu cầu của từng trường hợp cụ thể.
Phần tử 1
Phần tử 2
```
- Tất cả các phần tử bên trong `` sẽ được thêm hoặc xóa cùng nhau.
---
7. v-show
- `v-show` chỉ thay đổi thuộc tính CSS `display` của phần tử. - Cú pháp: `Nội dung
`
- Khi `condition` là `true`, phần tử sẽ hiển thị. Ngược lại, nó sẽ ẩn đi nhưng vẫn còn trong DOM.
---
8. v-if vs v-show
When to Use v-if
- Sử dụng `v-if` khi: - Cần thêm hoặc xóa phần tử khỏi DOM. - Có nhiều điều kiện phức tạp.When to Use v-show
- Sử dụng `v-show` khi: - Chỉ cần ẩn hoặc hiển thị phần tử mà không thay đổi DOM. - Cần tối ưu hiệu suất khi điều kiện thay đổi thường xuyên.Performance Comparison
- `v-if` có thể chậm hơn do phải thêm/xóa phần tử trong DOM. - `v-show` nhanh hơn trong trường hợp chỉ cần ẩn hiển thị, nhưng có thể tốn băng thông hơn nếu nội dung phức tạp. ---9. v-if with v-for
- Tránh sử dụng `v-if` và `v-for` trên cùng một phần tử. - Nên tách riêng thành các phần tử khác nhau để tránh nhầm lẫn và lỗi không mong muốn. ---10. Common Patterns
- Hiển thị danh sách với điều kiện: ```html <div v-for="item in items" :key="item.id" v-if="item.visible"> </div> ``` - Thay thế nội dung khi không có dữ liệu: ```html
<div v-for="item in items" :key="item.id">
</div>
Không có dữ liệu
```
---