0%

【003】Vue基础学习:v-for的使用

v-for 的基本用法

v-for 用于实现列表渲染,可以使用item in itemsitem of items的语法

模版写法:

1
2
3
<li v-for="item in items">{{ item }}</li>
或:
<li v-for="item of items">{{ item }}</li>

js写法:

1
2
3
4
5
6
7
8
var vm = new Vue({
el: '#app',
data() {
return {
items: [1, 2, 3, 4, 5]
}
}
})

完整代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>v-for</title>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.11"></script>
</head>
<body>
<div id="app">
<ul>
<li v-for="item in items">{{ item }}</li>
</ul>
</div>
<script type="text/javascript">
var vm = new Vue({
el: '#app',
data() {
return {
items: [1, 2, 3, 4, 5]
}
}
})
</script>
</body>
</html>

在浏览器运行此文件,可以看到成功显示出如下数据:

1
2
3
4
5
1
2
3
4
5

v-for 渲染对象的键值对

键值对是元素的索引值,也就是本例中的对象在数组中所占的下标。

模版写法:

1
2
3
<li v-for="(item, index) in items">{{ item }}</li>
或:
<li v-for="(item, item) of items">{{ item }}</li>

其实就是多了一个index

完整代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>v-for</title>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.11"></script>
</head>
<body>
<div id="app">
<ul>
<li v-for="(item, index) in items">
{{ item }} --- {{ index }}
</li>
</ul>
</div>
<script type="text/javascript">
var vm = new Vue({
el: '#app',
data() {
return {
items: [1, 2, 3, 4, 5]
}
}
})
</script>
</body>
</html>

在浏览器运行此文件,可以看到成功显示出如下数据:

1
2
3
4
5
1 --- 0
2 --- 1
3 --- 2
4 --- 3
5 --- 4

key的说明

  1. 就地复用策略:当在进行列表渲染时,vue会直接对已有的标签进行复用,不会将所有的标签重新删除和创建,只会创建新的元素然后把新的数据渲染进去。
  2. key属性可以用来提升v-for渲染的效率,vue不会去改变原有的元素和数据,而是创建新的元素然后把新的数据渲染进去。
  3. key属性必须是唯一的标识,很多人使用index,不过建议使用数据的id可能会更好。
  4. 是否使用key都不会影响功能的实现,但是在vue2.2.0+版本中,如果不实用key,将会出现警告。

key的使用

模版写法:

1
2
3
<li v-for="(item, index) in items" :key="index">{{ item }}</li>
或:
<li v-for="(item, item) of items" :key="index">{{ item }}</li>

完整代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>v-for</title>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.11"></script>
</head>
<body>
<div id="app">
<ul>
<li
v-for="(item, index) in items"
:key="index"
>
{{ item }} --- {{ index }}
</li>
</ul>
</div>
<script type="text/javascript">
var vm = new Vue({
el: '#app',
data() {
return {
items: [1, 2, 3, 4, 5]
}
}
})
</script>
</body>
</html>

在浏览器运行此文件,可以看到成功显示出如下数据:

1
2
3
4
5
1 --- 0
2 --- 1
3 --- 2
4 --- 3
5 --- 4

总结

通过以上各种例子可以发现,其实v-for也不会太难,而且在工作中,v-for是经常使用的,比如在加载商品列表时会使用,加载信息记录时也会使用,所以平时需要多写一下。