在 OpenHarmony(ArkUI) 里,“列表组件”通常指 List + ListItem,数据绑定一般通过 状态变量 + ForEach 来实现。下面按常见场景给你说明。
@Entry
@Component
struct ListExample {
build() {
List() {
ListItem() {
Text('Item 1')
}
ListItem() {
Text('Item 2')
}
}
}
}
这种方式没有数据绑定,适合写死内容。
interface ItemModel {
id: number
name: string
}
@State 定义数据源@Entry
@Component
struct ListExample {
@State items: ItemModel[] = [
{ id: 1, name: '苹果' },
{ id: 2, name: '香蕉' },
{ id: 3, name: '橙子' }
]
build() {
List() {
ForEach(this.items, (item: ItemModel) => {
ListItem() {
Text(item.name)
.fontSize(18)
}
}, (item) => item.id.toString())
}
}
}
✅ 关键点:
List 只能放 ListItemForEach 负责数据 → UI 的绑定ListItem() {
Text(item.name)
}
.onClick(() => {
console.info('点击了:' + item.name)
})
this.items.push({ id: 4, name: '西瓜' })
只要 items 是 @State,列表会自动更新。
@Component
struct ItemView {
item: ItemModel
build() {
Text(this.item.name)
.fontSize(20)
}
}
使用:
ForEach(this.items, (item) => {
ListItem() {
ItemView({ item: item })
}
}, item => item.id.toString())
❌ 直接在 List 里写循环
❌ ForEach 没有 key
❌ 用普通变量而不是 @State
OpenHarmony 列表绑定 = List + ListItem + ForEach + @State
如果你用的是 eTS / ArkTS / API 9 / API 10 或 声明式 UI / 类 Web 范式,我也可以给你对应版本示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。