- vừa được xem lúc

[P4] VueJS - Condition Rendering và List Rendering

0 0 6

Người đăng: Tuấn Lê

Theo Viblo Asia

Condition Rendering là một thành phần quan trọng của Vue. Với việc xử lý render bằng DOM trong Javascript, việc này ở góc độ nào đó thực sự là cực hình cho các dev. Với Vue, việc xử lý render các component đã trở nên gọn gàng hơn rất nhiều, chúng ta chỉ cần quan tâm đến phần condition thôi chứ không cần quan tâm đến việc xử lý render nữa vì Vue đã làm cho chúng ta rồi. Sau đây là một vài ứng dụng về việc sử dụng Condition Rendering và List Rendering trong Vue

1. v-if

Cái tên gọi của nó cũng đã thể hiển quá rõ cái tác dụng của nó rồi nhỉ. v-if quết định xem component này có được render hay không tùy vào tham số mà nó được truyền vào.

<template> <div> <div id="text1" v-if="isActive"> <h1>Hello World</h1> </div> <div id="text2" v-if="!isActive"> <h1>Goodbye World</h1> </div> <div>
</template> <script> export default { data() { return { isActive: true } } }
</script>

Trong ví dụ này, div text1 là được render vì isActive = true, còn với div text 2 sẽ không được render vì !isActive = false. Ngoài ra chúng ta có thể sử dụng v-else thay cho điều kiện false

<template> <div> <div id="text1" v-show="isActive"> <h1>Hello World</h1> </div> <div id="text2" v-else> <h1>Goodbye World</h1> </div> <div>
</template> <script> export default { data() { return { isActive: true } } }
</script>

Lưu ý, chúng ta có thể sử dụng v-else khi nó nằm ngay sau v-if.

2. v-show

Về cơ bản, v-show cũng như v-if cũng là hook quyết định hiển thị các component. Tuy nhiên, với v-show, component sẽ được render ngay từ đầu, và sẽ bị ẩn đi bằng thuộc tính style = "display: none" nếu điều kiện là false

<template> <div> <div id="text1" v-show="isActive"> <h1>Hello World</h1> </div> <div id="text2" v-show="!isActive"> <h1>Goodbye World</h1> </div> <div>
</template> <script> export default { data() { return { isActive: true } } }
</script>

Còn đây là component được render ra

<div> <div id="text1"><h1>Hello World</h1></div> <div id="text2" style="display: none;">h1>Goodbye World</h1></div>
</div>

3. v-for

Trong một web app, khi chúng ta gọi request từ backend và nhận về một list json chẳng hạn. Với xử lý DOM thông thường, chúng ta phải sử dụng vòng lặp trên list đó, rồi add từng component vào document lạ nghe thật là phiền phức phải không nào. Với Vue, chúng ta có thể sử dụng v-for để xử lý điều này, chúng ta cũng chỉ cần khai báo đến data truyền vào, Vue sẽ tự xử lý và render cho chúng ta. Đồng thời chúng ta cũng có thể sử dụng v-if để có thể lồng ghép thêm các condition, tùy trường hợp. Cùng xem thử ví dụ sau:

<template> <div> <div id="text1" v-for="(value, index) in list" :key="index"> <h1>Tên : {{value.name}} - Tuổi : {{value.age}}</h1> </div> </div>
</template> <script> export default { name: 'App', data() { return { list: [ {name: 'ABC', age: 10}, {name: 'CDE', age: 11}, {name: 'XYZ', age: 12}, {name: 'GHI', age: 13}, {name: 'QWE', age: 14} ] } }
}
</script>

Kết quả

Trong ví dụ trên, mình đã truyền vào một list data gồm 5 element. Vue sẽ duyệt list này và render cả các div text1 theo các element đang được duyệt. Ngoài ra chúng ta có thể kết hợp thêm v-if

<template> <div> <div id="text1" v-for="(value, index) in list" :key="index"> <h1 v-if="value.age <= 12">Tên : {{value.name}} - Tuổi : {{value.age}}</h1> </div> </div>
</template> <script> export default { name: 'App', data() { return { list: [ {name: 'ABC', age: 10}, {name: 'CDE', age: 11}, {name: 'XYZ', age: 12}, {name: 'GHI', age: 13}, {name: 'QWE', age: 14} ] } }
}
</script>

Lưu ý, để Vue có thể nhận biết các component cần render lại khi cập nhật list, chúng ta luôn phải có key đi kèm với v-for. Trong ví dụ trên, mình sử dụng luôn thuộc tính index để làm key cho v-for.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Ví dụ CRUD với Laravel và Vuejs.

1. Cài đặt Laravel. composer create-project --prefer-dist laravel/laravel vuelaravelcrud. .

0 0 141

- vừa được xem lúc

Bài 1: Cài đặt Vue và chạy chương trình Hello world đầu tiên

Ở bài đầu tiên này mình sẽ hướng dẫn các bài cài đặt VueJS vào project Laravel, sau đó chúng ta sẽ cùng xem những thứ cơ bản của Vue nhé. Vì Laravel đã hỗ trợ tích hợp VueJS nên việc cài đặt của chúng ta sẽ hết sức đơn giản.

0 0 125

- vừa được xem lúc

Lazy loading and code splitting in Vue.js

Việc giữ cho ứng dụng của bạn tải nhanh ngày càng khó hơn. Trong loạt bài này, tôi sẽ đi sâu vào các kỹ thuật tối ưu hiệu suất Vue và bạn có thể sử dụng trong các ứng dụng Vue.

0 0 103

- vừa được xem lúc

Validating Vue.js Forms Using Vuelidate

Introduction. Validate thông tin đầu vào trên các ứng dụng web là rất quan trọng.

0 0 201

- vừa được xem lúc

5 Good Practices mình đang sử dụng trong Vuejs

Mở đầu. Mình đã sử dụng vuejs được cũng được 1 năm trở lại đây.

0 0 87

- vừa được xem lúc

[P5] VueJS - Một vài Interpolations khác trong Vue

Ở bài viết trước, mình đã nói về một vài keyword trong Vue như v-if, v-else, v-show, v-for, ... Chúng thực chất là các syntax đặc biệt của Vue để thao tác linh hoạt với các DOM ảo, được gọi là Interpolations. Ngoài ra, Vue còn các Interpolations khác. Mục đích của nó thì đã quá rõ ràng, hiển thị tex

0 0 49