在 Vue 中,v-for
是一个常用的指令,用于 循环 渲染数组或对象数据。你可以通过它来动态展示一个数据列表,常用于渲染表格、列表等多种数据展示场景。
1. 基本用法:循环数组
v-for
可以遍历一个数组,并生成一个新的 DOM 元素。
<div id="app">
<ul>
<li v-for="item in items" :key="item.id">{{ item.name }}</li>
</ul>
</div>
<script>
new Vue({
el: '#app',
data: {
items: [
{ id: 1, name: 'Apple' },
{ id: 2, name: 'Banana' },
{ id: 3, name: 'Cherry' }
]
}
});
</script>
解析
v-for="item in items"
:表示循环遍历items
数组,每次迭代将item
赋值为数组中的一个元素。:key="item.id"
:每个循环项都应该有一个唯一的key
值,Vue 用它来跟踪每个元素的变化,从而高效地更新 DOM。key
通常使用元素的唯一标识符。{{ item.name }}
:在每个<li>
标签中展示item
对象的name
属性。
2. 循环数字范围:v-for
与 index
v-for
还可以用来生成一个数字范围,在循环过程中,我们可以访问当前的索引(index
)。
<div id="app">
<ul>
<li v-for="(item, index) in items" :key="index">{{ index + 1 }}. {{ item }}</li>
</ul>
</div>
<script>
new Vue({
el: '#app',
data: {
items: ['Apple', 'Banana', 'Cherry']
}
});
</script>
解析
v-for="(item, index) in items"
:index
是循环的当前索引值,从 0 开始。{{ index + 1 }}
:通过索引来显示当前项目的序号。
3. 循环对象
v-for
也可以用于遍历一个对象的属性。
<div id="app">
<ul>
<li v-for="(value, key) in person" :key="key">{{ key }}: {{ value }}</li>
</ul>
</div>
<script>
new Vue({
el: '#app',
data: {
person: {
name: 'John',
age: 30,
job: 'Developer'
}
}
});
</script>
解析
v-for="(value, key) in person"
:这里person
是一个对象,key
是属性名,value
是属性值。{{ key }}: {{ value }}
:显示属性名和对应的值。
4. 使用 v-for
结合组件
在 Vue 中,你可以用 v-for
来循环渲染组件。
<div id="app">
<product-item v-for="product in products" :key="product.id" :product="product"></product-item>
</div>
<script>
Vue.component('product-item', {
props: ['product'],
template: `<div>{{ product.name }} - ${{ product.price }}</div>`
});
new Vue({
el: '#app',
data: {
products: [
{ id: 1, name: 'Laptop', price: 1000 },
{ id: 2, name: 'Smartphone', price: 500 },
{ id: 3, name: 'Headphones', price: 100 }
]
}
});
</script>
解析
v-for="product in products"
:循环products
数组,渲染product-item
组件。:key="product.id"
:每个组件都需要唯一的key
值。:product="product"
:将当前的product
对象作为属性传递给子组件。
5. 在 v-for
中使用 index
有时你可能需要在 v-for
循环中访问当前项的索引(index
),这时你可以使用 (item, index)
的语法。
<div id="app">
<ul>
<li v-for="(item, index) in items" :key="index">{{ index + 1 }}: {{ item }}</li>
</ul>
</div>
<script>
new Vue({
el: '#app',
data: {
items: ['Apple', 'Banana', 'Cherry']
}
});
</script>
解析
v-for="(item, index) in items"
:这里可以访问index
,即每个元素的索引值,从0
开始。{{ index + 1 }}: {{ item }}
:通过index
展示元素的序号。
6. 使用 v-for
遍历数字范围
你可以通过 v-for
在 Vue 中生成一个数字范围,比如生成 1 到 10 的数字列表。
<div id="app">
<ul>
<li v-for="n in 10" :key="n">{{ n }}</li>
</ul>
</div>
<script>
new Vue({
el: '#app',
});
</script>
解析
v-for="n in 10"
:表示循环 1 到 10 的数字。{{ n }}
:展示每个数字。
总结
v-for
是 Vue 中用于循环渲染数据的核心指令,可以循环数组、对象,甚至生成数字范围。- 使用
v-for
时,务必提供唯一的key
值,以提高渲染性能。 - 可以通过
index
来访问当前循环的索引,用于动态展示数据。
掌握 v-for
的用法,可以大大提升你在 Vue 中渲染复杂数据结构的能力。
发表回复