ArkTs中的ForEach和forEach
在ArkTs语言中,有两个容易混淆的关键字ForEach和forEach,它们相同的作用都是遍历集合数据,但是可使用的地方完全不同。
一、ForEach只能存在于UI结构中
ForEach只能存在于UI容器内,比如给Grid容器根据集合数据生成若干个GridItem,示例如下:
@Component struct xxx{ build() { Grid(){ ForEach(this.someList, (item: SomeModel)=>{ GridItem(){ Image($r(item.img_url)) } }) }.columnsTemplate('1fr 1fr') .columnsGap(2) .rowsGap(2) .showBorderEdge() } }
二、forEach只能存在于非UI结构代码中
区别于ForEach,forEach只能存在于非UI结构代码中,比如点击事件的逻辑代码之中,示例如下:
@Component struct xxx{ @ObjectLink someList: SomeModel[] build() { Column(){ Grid(){ ForEach(this.someList, (item: SomeModel)=>{ GridItem(){ //some UI }.onClick(()=>{ this.someList.forEach((item: SomeModel, itemIndex: number)=>{ // some logical code }) }) }) } } } }