1、基本介绍
-
wx:for
根据数组或对象循环渲染组件
<view wx:for="{{【array】}}">
{{index}}: {{item}}
</view>
<view wx:for="{{【object】}}">
{{index}}: {{item}}
</view>
参数 | 说明 |
---|---|
array / object | 需要循环的数组 / 对象 |
item | 当前循环项(默认名称) |
index | 当前循环项的索引(默认名称) |
2、演示
- 数组列表渲染
<view wx:for="{{fruits}}">
{{index + 1}}. {{item}}
</view>
Page({
data: {
fruits: ['苹果', '香蕉', '橙子']
}
});
- 对象列表渲染
<view wx:for="{{list}}">
{{item.id}} - {{item.name}}
</view>
Page({
data: {
list: [
{ id: 1, name: '小明' },
{ id: 2, name: '小红' },
{ id: 3, name: '小刚' }
]
}
});
- 嵌套列表渲染
<view wx:for="{{classes}}">
<text>{{item.name}} 班学生:</text>
<view wx:for="{{item.students}}">
{{index + 1}}. {{item}}
</view>
</view>
Page({
data: {
classes: [
{
name: '一年级',
students: ['小明', '小红']
},
{
name: '二年级',
students: ['小刚', '小丽']
}
]
}
});
3、自定义变量名
(1)基本介绍
-
可以通过
wx:for-item
自定义当前循环项变量名 -
可以通过
wx:for-index
自定义当前循环项的索引变量名
<view wx:for="{{【array / object】}}" wx:for-item="【currentItem】" wx:for-index="【currentIndex】">
{{【currentIndex】}}: {{【currentItem】}}
</view>
(2)演示
<view wx:for="{{fruits}}" wx:for-item="fruit" wx:for-index="i">
{{i + 1}}. {{fruit}}
</view>
Page({
data: {
fruits: ['苹果', '香蕉', '橙子']
}
});
4、wx:key
(1)基本介绍
-
wx:key
用于指定列表中每个项的唯一标识符,以提高渲染性能
<view wx:for="{{【array】}}" wx:key="【key】">
{{index}}: {{item}}
</view>
<view wx:for="{{【object】}}" wx:key="【key】">
{{index}}: {{item}}
</view>
(2)适用场景
-
wx:key
的适用于数据可能发生变化的列表,例如,排序、删除、新增 -
如果没有
wx:key
,当列表数据发生变化时,会重新渲染整个列表,而不是只更新变化的部分
(3)演示
- 如果列表项是对象,可以使用对象的某个唯一属性(例如,id)作为
wx:key
的值
<view wx:for="{{users}}" wx:key="id">
{{item.name}}
</view>
Page({
data: {
users: [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 3, name: 'Charlie' }
]
}
});
- 如果列表项是简单数据类型(例如,字符串、数字),可以直接使用
*this
(数组项本身)作为wx:key
的值
<view wx:for="{{fruits}}" wx:key="*this">
{{item}}
</view>
Page({
data: {
fruits: ['Apple', 'Banana', 'Orange']
}
});
- 如果列表项没有唯一标识符,可以使用 index 作为
wx:key
的值
<view wx:for="{{fruits}}" wx:key="index">
{{index + 1}}. {{item}}
</view>
Page({
data: {
fruits: ['Apple', 'Banana', 'Orange']
}
});