From 0be080035704dd87dea66f77c9d77a06cd58a112 Mon Sep 17 00:00:00 2001 From: ivagin Date: Tue, 24 Dec 2024 15:15:48 +0100 Subject: [PATCH 1/4] [shopping] ArkTS ForEach workaround Signed-off-by: ivagin --- arkoala-arkts/arkui/src/ForEach.ts | 4 ++-- .../src/ets/pages/detailPage/detail.ets | 24 +++++++++---------- .../shopping/src/ets/pages/homePage/User.ets | 16 ++++++------- .../src/ets/pages/homePage/boutique.ets | 4 ++-- .../shopping/src/ets/pages/homePage/core1.ets | 8 +++---- .../shopping/src/ets/pages/homePage/core2.ets | 8 +++---- .../shopping/src/ets/pages/homePage/find.ets | 12 +++++----- .../shopping/src/ets/pages/homePage/main.ets | 16 ++++++------- .../src/ets/pages/homePage/shopCart.ets | 8 +++---- .../shopping/src/ets/pages/index-entry.ets | 4 ++-- .../src/ets/pages/search/searchPage.ets | 16 ++++++------- arkoala/ets-plugin/src/Importer.ts | 1 + 12 files changed, 61 insertions(+), 60 deletions(-) diff --git a/arkoala-arkts/arkui/src/ForEach.ts b/arkoala-arkts/arkui/src/ForEach.ts index d05800a8f..c0543a682 100644 --- a/arkoala-arkts/arkui/src/ForEach.ts +++ b/arkoala-arkts/arkui/src/ForEach.ts @@ -19,8 +19,8 @@ import { RepeatByArray } from "@koalaui/runtime" /** @memo */ export function ForEach(data: Array, /** @memo */ - itemGenerator: (item: T, index?: int32) => void, - keyGenerator?: (item: T, index?: int32) => string, + itemGenerator: (item: T, index: int32) => void, + keyGenerator: (item: T, index: int32) => string, ) { RepeatByArray(data, (element: T, index: int32) => keyGenerator ? hashCodeFromString(keyGenerator!(element, index)) : index, diff --git a/arkoala-arkts/shopping/src/ets/pages/detailPage/detail.ets b/arkoala-arkts/shopping/src/ets/pages/detailPage/detail.ets index 72500a743..083e1bd95 100644 --- a/arkoala-arkts/shopping/src/ets/pages/detailPage/detail.ets +++ b/arkoala-arkts/shopping/src/ets/pages/detailPage/detail.ets @@ -85,10 +85,10 @@ export struct Detail { .backgroundColor(Color.White) Swiper() { - ForEach(this.swiper, (item: SwiperModel) => { + ForEach(this.swiper, (item: SwiperModel, index: int32) => { Image(item.src) .objectFit(ImageFit.Contain) - }, (item: SwiperModel) => JSON.stringify(item)) + }, (item: SwiperModel, index: int32) => JSON.stringify(item)) } .index(0) .width('100%') @@ -364,11 +364,11 @@ export struct Detail { Flex({ justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) { Text() Flex({ justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) { - ForEach(this.phoneType, (item: PhoneTypeModel) => { + ForEach(this.phoneType, (item: PhoneTypeModel, index: int32) => { Image(`${item.uri}`) .objectFit(ImageFit.Contain) .width(35 * this.ratio) - }, (item: PhoneTypeModel) => JSON.stringify(item)) + }, (item: PhoneTypeModel, index: int32) => JSON.stringify(item)) Text('共6种机身颜色可选') .fontSize(13 * this.ratio) } @@ -456,12 +456,12 @@ export struct Detail { .margin({ top: 10, bottom: 10 } as Margin) Row() { - ForEach(this.showImg, (item: ShowImgModel) => { + ForEach(this.showImg, (item: ShowImgModel, index: int32) => { Image(item.uri) .objectFit(ImageFit.Cover) .width('25%') .height(100 * this.ratio) - }, (item: ShowImgModel) => JSON.stringify(item)) + }, (item: ShowImgModel, index: int32) => JSON.stringify(item)) } .backgroundColor(Color.Red) @@ -586,7 +586,7 @@ export struct Detail { .margin({ top: 10, bottom: 10 } as Margin) Flex({ justifyContent: FlexAlign.Center, wrap: FlexWrap.Wrap, alignContent: FlexAlign.Start }) { - ForEach(this.recommendData, (item: RecommendDataModel) => { + ForEach(this.recommendData, (item: RecommendDataModel, index: int32) => { Column() { Image(`${item.img}`) .objectFit(ImageFit.Contain) @@ -606,22 +606,22 @@ export struct Detail { .width('33%') .height('48%') .alignItems(HorizontalAlign.Start) - }, (item: RecommendDataModel) => JSON.stringify(item)) + }, (item: RecommendDataModel, index: int32) => JSON.stringify(item)) } .height('45%') } .margin({ top: 10 } as Margin) Column() { - ForEach(this.goodsList, (item: GoodsInfoModel) => { + ForEach(this.goodsList, (item: GoodsInfoModel, index: int32) => { Image(`${item.img}`) .width('100%') .objectFit(ImageFit.Cover) - }, (item: GoodsInfoModel) => JSON.stringify(item)) + }, (item: GoodsInfoModel, index: int32) => JSON.stringify(item)) } Flex({ justifyContent: FlexAlign.Start, wrap: FlexWrap.Wrap, alignContent: FlexAlign.Start }) { - ForEach(this.listImg, (item: ListDataModel) => { + ForEach(this.listImg, (item: ListDataModel, index: int32) => { Column() { Image(`${item.img}`) .objectFit(ImageFit.Contain) @@ -638,7 +638,7 @@ export struct Detail { .height('32%') .margin(5) .alignItems(HorizontalAlign.Center) - }, (item: ListDataModel) => JSON.stringify(item)) + }, (item: ListDataModel, index: int32) => JSON.stringify(item)) } } diff --git a/arkoala-arkts/shopping/src/ets/pages/homePage/User.ets b/arkoala-arkts/shopping/src/ets/pages/homePage/User.ets index 9ba78d1ab..711fcd145 100644 --- a/arkoala-arkts/shopping/src/ets/pages/homePage/User.ets +++ b/arkoala-arkts/shopping/src/ets/pages/homePage/User.ets @@ -94,7 +94,7 @@ export struct User { } Flex({ justifyContent: FlexAlign.SpaceAround, alignItems: ItemAlign.Center }) { - ForEach(this.record, (item: RecordModel) => { + ForEach(this.record, (item: RecordModel, index: int32) => { Column() { Image(item.img) .width(30 * this.ratio) @@ -113,7 +113,7 @@ export struct User { } as SearchParam }) }) - }, (item: RecordModel) => JSON.stringify(item)) + }, (item: RecordModel, index: int32) => JSON.stringify(item)) } Flex({ justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) { @@ -161,7 +161,7 @@ export struct User { } Flex({ justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) { - ForEach(this.orderData, (item: OrderModel) => { + ForEach(this.orderData, (item: OrderModel, index: int32) => { Column() { Image(item.img) .width(30 * this.ratio) @@ -171,7 +171,7 @@ export struct User { Text(item.title) .fontSize(12 * this.ratio) } - }, (item: OrderModel) => JSON.stringify(item)) + }, (item: OrderModel, index: int32) => JSON.stringify(item)) } .margin({ top: 10 } as Margin) @@ -211,7 +211,7 @@ export struct User { Column() { Flex({ justifyContent: FlexAlign.SpaceAround, alignItems: ItemAlign.Center }) { - ForEach(this.discountData, (item: DiscountModel) => { + ForEach(this.discountData, (item: DiscountModel, index: int32) => { Column() { Image(item.img) .width(35 * this.ratio) @@ -225,7 +225,7 @@ export struct User { .fontSize(12 * this.ratio) .fontColor(Color.Grey) } - }, (item: DiscountModel) => JSON.stringify(item)) + }, (item: DiscountModel, index: int32) => JSON.stringify(item)) } .margin({ top: 10 } as Margin) } @@ -236,7 +236,7 @@ export struct User { Column() { Flex({ justifyContent: FlexAlign.SpaceAround, alignItems: ItemAlign.Center }) { - ForEach(this.serviceData, (item: ServiceModel) => { + ForEach(this.serviceData, (item: ServiceModel, index: int32) => { Column() { Image(item.img) .width(30 * this.ratio) @@ -246,7 +246,7 @@ export struct User { Text(item.title) .fontSize(12 * this.ratio) } - }, (item: ServiceModel) => JSON.stringify(item)) + }, (item: ServiceModel, index: int32) => JSON.stringify(item)) } .margin({ top: 10 } as Margin) } diff --git a/arkoala-arkts/shopping/src/ets/pages/homePage/boutique.ets b/arkoala-arkts/shopping/src/ets/pages/homePage/boutique.ets index b59eac558..990d0d47c 100644 --- a/arkoala-arkts/shopping/src/ets/pages/homePage/boutique.ets +++ b/arkoala-arkts/shopping/src/ets/pages/homePage/boutique.ets @@ -24,7 +24,7 @@ export struct Boutique { build() { Column() { Flex({ wrap: FlexWrap.Wrap, direction: FlexDirection.Row }) { - ForEach(this.boutiqueData, (item: BoutiqueModel) => { + ForEach(this.boutiqueData, (item: BoutiqueModel, index: int32) => { Column() { Text(item.text1) .fontSize(15 * this.ratio) @@ -46,7 +46,7 @@ export struct Boutique { } .width('50%') .alignItems(HorizontalAlign.Start) - }, (item: BoutiqueModel) => JSON.stringify(item)) + }, (item: BoutiqueModel, index: int32) => JSON.stringify(item)) } } .width('92%') diff --git a/arkoala-arkts/shopping/src/ets/pages/homePage/core1.ets b/arkoala-arkts/shopping/src/ets/pages/homePage/core1.ets index 557b9a2bf..92e2cf49c 100644 --- a/arkoala-arkts/shopping/src/ets/pages/homePage/core1.ets +++ b/arkoala-arkts/shopping/src/ets/pages/homePage/core1.ets @@ -26,10 +26,10 @@ export struct Core1 { build() { Column() { List() { - ForEach(this.cols, (item1: Number) => { + ForEach(this.cols, (item1: Number, index: int32) => { ListItem() { Grid() { - ForEach(this.rows, (item2: Number) => { + ForEach(this.rows, (item2: Number, index: int32) => { GridItem() { Column() { Image(`${this.coreData[item1.valueOf() * 2 + item2.valueOf()].uri}`) @@ -42,13 +42,13 @@ export struct Core1 { } } .width('100%') - }, (item2: Number) => JSON.stringify(item2.valueOf())) + }, (item2: Number, index: int32) => JSON.stringify(item2.valueOf())) } .rowsTemplate('1fr 1fr') .columnsTemplate('1fr') } .width('20%') - }, (item1: Number) => JSON.stringify(item1.valueOf())) + }, (item1: Number, index: int32) => JSON.stringify(item1.valueOf())) } .listDirection(Axis.Horizontal) .height(160 * this.ratio) diff --git a/arkoala-arkts/shopping/src/ets/pages/homePage/core2.ets b/arkoala-arkts/shopping/src/ets/pages/homePage/core2.ets index 2505226b8..24472e0e9 100644 --- a/arkoala-arkts/shopping/src/ets/pages/homePage/core2.ets +++ b/arkoala-arkts/shopping/src/ets/pages/homePage/core2.ets @@ -26,10 +26,10 @@ export struct Core2 { build() { Column() { List() { - ForEach(this.cols, (item1: Number) => { + ForEach(this.cols, (item1: Number, index: int32) => { ListItem() { Grid() { - ForEach(this.rows, (item2: Number) => { + ForEach(this.rows, (item2: Number, index: int32) => { GridItem() { Column() { Image(`${this.coreData[item1.valueOf() * 2 + item2.valueOf()].uri}`) @@ -42,13 +42,13 @@ export struct Core2 { } } .width('100%') - }, (item2: Number) => JSON.stringify(item2.valueOf())) + }, (item2: Number, index: int32) => JSON.stringify(item2.valueOf())) } .rowsTemplate('1fr 1fr') .columnsTemplate('1fr') } .width('22.5%') - }, (item1: Number) => JSON.stringify(item1.valueOf())) + }, (item1: Number, index: int32) => JSON.stringify(item1.valueOf())) } .listDirection(Axis.Horizontal) .height('22%') diff --git a/arkoala-arkts/shopping/src/ets/pages/homePage/find.ets b/arkoala-arkts/shopping/src/ets/pages/homePage/find.ets index 63b3eb510..242dd14e5 100644 --- a/arkoala-arkts/shopping/src/ets/pages/homePage/find.ets +++ b/arkoala-arkts/shopping/src/ets/pages/homePage/find.ets @@ -41,11 +41,11 @@ export struct FindPage { .vertical(true) .height('8%') Swiper() { - ForEach(this.searchText, (item: SearchTextModel) => { + ForEach(this.searchText, (item: SearchTextModel, index: int32) => { Text(item.searchText) .fontSize(15 * this.ratio) .fontColor(Color.Grey) - }, (item: SearchTextModel) => JSON.stringify(item)) + }, (item: SearchTextModel, index: int32) => JSON.stringify(item)) } .width('65%') .autoPlay(false) @@ -77,10 +77,10 @@ export struct FindPage { ListItem() { Flex({ justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) { - ForEach(this.titleText, (item: FindTitleTextModel) => { + ForEach(this.titleText, (item: FindTitleTextModel, index: int32) => { Text(item.titleText) .fontSize(15 * this.ratio) - }, (item: FindTitleTextModel) => JSON.stringify(item)) + }, (item: FindTitleTextModel, index: int32) => JSON.stringify(item)) } .padding({ left: 15, right: 15 } as Padding) } @@ -90,7 +90,7 @@ export struct FindPage { ListItem() { Column() { - ForEach(items, (item: Number) => { + ForEach(items, (item: Number, index: int32) => { Row() { Column() { ImageItem({ ratio: this.ratio }) @@ -105,7 +105,7 @@ export struct FindPage { .width('100%') .aspectRatio(1.1) .margin({ top: 10 } as Margin) - }, (item: Number) => JSON.stringify(item.valueOf())) + }, (item: Number, index: int32) => JSON.stringify(item.valueOf())) } .padding({ left: 10, right: 10 } as Padding) } diff --git a/arkoala-arkts/shopping/src/ets/pages/homePage/main.ets b/arkoala-arkts/shopping/src/ets/pages/homePage/main.ets index 52dcba274..11e37f41a 100644 --- a/arkoala-arkts/shopping/src/ets/pages/homePage/main.ets +++ b/arkoala-arkts/shopping/src/ets/pages/homePage/main.ets @@ -48,7 +48,7 @@ export struct MainPage { .objectFit(ImageFit.Contain) Swiper() { - ForEach(this.searchData, (item: SearchTextModel) => { + ForEach(this.searchData, (item: SearchTextModel, index: int32) => { Column() { Text(item.searchText) .fontSize(14 * (this.ratio + 0.2)) @@ -65,7 +65,7 @@ export struct MainPage { } this.pathInfos.pushPath({name:'searchPage', param: searchParam}) }) - }, (item: SearchTextModel) => JSON.stringify(item)) + }, (item: SearchTextModel, index: int32) => JSON.stringify(item)) } .width('65%') .autoPlay(true) @@ -97,7 +97,7 @@ export struct MainPage { Column() { Row() { List() { - ForEach(this.navData, (item: NavDataModel) => { + ForEach(this.navData, (item: NavDataModel, index: int32) => { ListItem() { Text(item.navData) .fontColor(`${item.navData == '首页' ? Color.Blue : Color.Black}`) @@ -107,7 +107,7 @@ export struct MainPage { .lineHeight(30 * this.ratio) } .height(30 * this.ratio) - }, (item: NavDataModel) => JSON.stringify(item)) + }, (item: NavDataModel, index: int32) => JSON.stringify(item)) } .height(30 * this.ratio) .width('85%') @@ -127,7 +127,7 @@ export struct MainPage { .margin({ bottom: 0, left: 5, right: 5 } as Margin) Swiper() { - ForEach(this.swiperData, (item: SwiperModel) => { + ForEach(this.swiperData, (item: SwiperModel, index: int32) => { Image(item.img) .width('100%') .height('100%') @@ -141,7 +141,7 @@ export struct MainPage { this.pathInfos.pushPath({name:'detailPage',param:params}) }) - }, (item: SwiperModel) => JSON.stringify(item)) + }, (item: SwiperModel, index: int32) => JSON.stringify(item)) } .autoPlay(true) .loop(true) @@ -158,7 +158,7 @@ export struct MainPage { .margin({ top: 10 } as Margin) Flex({ justifyContent: FlexAlign.SpaceAround, alignItems: ItemAlign.Center }) { - ForEach(this.titleBarData, (item: TitleBarModel) => { + ForEach(this.titleBarData, (item: TitleBarModel, index: int32) => { Column() { Text(item.title) .fontSize(15 * this.ratio) @@ -171,7 +171,7 @@ export struct MainPage { this.tabsIndex = item.id this.controller.changeIndex(item.id) }) - }, (item: TitleBarModel) => JSON.stringify(item)) + }, (item: TitleBarModel, index: int32) => JSON.stringify(item)) } .height('7%') .zIndex(2) diff --git a/arkoala-arkts/shopping/src/ets/pages/homePage/shopCart.ets b/arkoala-arkts/shopping/src/ets/pages/homePage/shopCart.ets index 437120abb..a6cc4621e 100644 --- a/arkoala-arkts/shopping/src/ets/pages/homePage/shopCart.ets +++ b/arkoala-arkts/shopping/src/ets/pages/homePage/shopCart.ets @@ -97,20 +97,20 @@ export struct ShopCart { Row() { Column() { - ForEach(this.cartNum, (item: Number) => { + ForEach(this.cartNum, (item: Number, index: int32) => { Column() { Other({ item: item.valueOf() % 6, ratio: this.ratio }) } - }, (item: Number) => JSON.stringify(item.valueOf())) + }, (item: Number, index: int32) => JSON.stringify(item.valueOf())) } .margin(2) Column() { - ForEach(this.cartNum, (item: Number) => { + ForEach(this.cartNum, (item: Number, index: int32) => { Column() { Other({ item: item.valueOf() % 6, ratio: this.ratio }) } - }, (item: Number) => JSON.stringify(item.valueOf())) + }, (item: Number, index: int32) => JSON.stringify(item.valueOf())) } .margin(2) } diff --git a/arkoala-arkts/shopping/src/ets/pages/index-entry.ets b/arkoala-arkts/shopping/src/ets/pages/index-entry.ets index accafa4aa..641d97a16 100644 --- a/arkoala-arkts/shopping/src/ets/pages/index-entry.ets +++ b/arkoala-arkts/shopping/src/ets/pages/index-entry.ets @@ -89,7 +89,7 @@ struct Index { Column() { Flex({ justifyContent: FlexAlign.SpaceAround, alignItems: ItemAlign.Center }) { - ForEach(this.tabTittleData, (item: TabTitleModel) => { + ForEach(this.tabTittleData, (item: TabTitleModel, index: int32) => { Flex({ direction: FlexDirection.Column, justifyContent: FlexAlign.Center, @@ -109,7 +109,7 @@ struct Index { this.tabsIndex = item.id this.controller.changeIndex(item.id) }) - }, (item: TabTitleModel) => JSON.stringify(item)) + }, (item: TabTitleModel, index: int32) => JSON.stringify(item)) } .height('8%') } diff --git a/arkoala-arkts/shopping/src/ets/pages/search/searchPage.ets b/arkoala-arkts/shopping/src/ets/pages/search/searchPage.ets index 7897ab199..886da2981 100644 --- a/arkoala-arkts/shopping/src/ets/pages/search/searchPage.ets +++ b/arkoala-arkts/shopping/src/ets/pages/search/searchPage.ets @@ -132,7 +132,7 @@ export struct SearchPage { if (this.flag) { Flex({ justifyContent: FlexAlign.Start, alignItems: ItemAlign.Center, wrap: FlexWrap.Wrap }) { - ForEach(this.exampleText, (item: ExampleDataModel) => { + ForEach(this.exampleText, (item: ExampleDataModel, index: int32) => { Button() { Text(item.exampleText) .fontSize(12 * this.ratio) @@ -142,7 +142,7 @@ export struct SearchPage { .margin(3) .height(30 * this.ratio) .backgroundColor('#f8f8f8') - }, (item: ExampleDataModel) => JSON.stringify(item)) + }, (item: ExampleDataModel, index: int32) => JSON.stringify(item)) } .margin({ left: 10, right: 10 } as Margin) } else { @@ -182,7 +182,7 @@ export struct SearchPage { .alignItems(HorizontalAlign.Start) List() { - ForEach(this.outerArray, (item: Number) => { + ForEach(this.outerArray, (item: Number, index: int32) => { ListItem() { Column() { Flex({ justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) { @@ -204,7 +204,7 @@ export struct SearchPage { } .padding({ left: 5, right: 5 } as Padding) - ForEach(this.innerArray, (item: Number) => { + ForEach(this.innerArray, (item: Number, index: int32) => { Flex({ justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) { Flex({ alignItems: ItemAlign.Center }) { Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) { @@ -231,7 +231,7 @@ export struct SearchPage { .padding({ left: 5, right: 5 } as Padding) .width('100%') .height(40 * this.ratio) - }, (item: Number) => JSON.stringify(item.valueOf())) + }, (item: Number, index: int32) => JSON.stringify(item.valueOf())) } .width('100%') } @@ -240,7 +240,7 @@ export struct SearchPage { .padding({ top: 5 } as Padding) .backgroundColor(Color.White) .width(`60%`) - }, (item: Number) => JSON.stringify(item.valueOf())) + }, (item: Number, index: int32) => JSON.stringify(item.valueOf())) } .listDirection(Axis.Horizontal) .height('70%') @@ -257,7 +257,7 @@ export struct SearchPage { } if (this.isFlag) { Column() { - ForEach(this.searched, (item: string) => { + ForEach(this.searched, (item: string, index: int32) => { Flex({ justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) { Row() { Image('/resources/icon/search.png') @@ -281,7 +281,7 @@ export struct SearchPage { this.isFlag = false this.value = item }) - }, (item: string) => JSON.stringify(item)) + }, (item: string, index: int32) => JSON.stringify(item)) } } } diff --git a/arkoala/ets-plugin/src/Importer.ts b/arkoala/ets-plugin/src/Importer.ts index 69de0a7b1..4833ca394 100644 --- a/arkoala/ets-plugin/src/Importer.ts +++ b/arkoala/ets-plugin/src/Importer.ts @@ -257,6 +257,7 @@ export class Importer { temporary workaround for arkts reexport bug */ if (this.isArkts()) { + this.addCommonImport("int32") if (name === "LocalStorage") return this.addArkuiCommonImport(name) if (name === "observableProxy") return this.addArkuiCommonImport(name) } -- Gitee From 88a2eb7b69feabb18fe3520c41585d59170dc70c Mon Sep 17 00:00:00 2001 From: Alexander Gorshenev Date: Wed, 25 Dec 2024 14:19:48 +0300 Subject: [PATCH 2/4] A little better fix Signed-off-by: Alexander Gorshenev --- arkoala-arkts/arkui/src/ForEach.ts | 10 ++++---- .../src/ets/pages/detailPage/detail.ets | 24 +++++++++---------- .../shopping/src/ets/pages/homePage/User.ets | 16 ++++++------- .../src/ets/pages/homePage/boutique.ets | 4 ++-- .../shopping/src/ets/pages/homePage/core1.ets | 8 +++---- .../shopping/src/ets/pages/homePage/core2.ets | 8 +++---- .../shopping/src/ets/pages/homePage/find.ets | 12 +++++----- .../shopping/src/ets/pages/homePage/main.ets | 16 ++++++------- .../src/ets/pages/homePage/shopCart.ets | 8 +++---- .../shopping/src/ets/pages/index-entry.ets | 4 ++-- .../src/ets/pages/search/searchPage.ets | 16 ++++++------- 11 files changed, 63 insertions(+), 63 deletions(-) diff --git a/arkoala-arkts/arkui/src/ForEach.ts b/arkoala-arkts/arkui/src/ForEach.ts index c0543a682..580c14100 100644 --- a/arkoala-arkts/arkui/src/ForEach.ts +++ b/arkoala-arkts/arkui/src/ForEach.ts @@ -19,10 +19,10 @@ import { RepeatByArray } from "@koalaui/runtime" /** @memo */ export function ForEach(data: Array, /** @memo */ - itemGenerator: (item: T, index: int32) => void, - keyGenerator: (item: T, index: int32) => string, + itemGenerator: (item: T, index: number) => void, + keyGenerator: (item: T, index: number) => string, ) { - RepeatByArray(data, - (element: T, index: int32) => keyGenerator ? hashCodeFromString(keyGenerator!(element, index)) : index, - (element: T, index: int32) => itemGenerator(element, index)) + RepeatByArray(data, + (element: T, index: int32) => keyGenerator ? hashCodeFromString(keyGenerator!(element, (index as number))) : index, + (element: T, index: int32) => itemGenerator(element, (index as number))) } diff --git a/arkoala-arkts/shopping/src/ets/pages/detailPage/detail.ets b/arkoala-arkts/shopping/src/ets/pages/detailPage/detail.ets index 083e1bd95..21c6c5f32 100644 --- a/arkoala-arkts/shopping/src/ets/pages/detailPage/detail.ets +++ b/arkoala-arkts/shopping/src/ets/pages/detailPage/detail.ets @@ -85,10 +85,10 @@ export struct Detail { .backgroundColor(Color.White) Swiper() { - ForEach(this.swiper, (item: SwiperModel, index: int32) => { + ForEach(this.swiper, (item: SwiperModel, index: number) => { Image(item.src) .objectFit(ImageFit.Contain) - }, (item: SwiperModel, index: int32) => JSON.stringify(item)) + }, (item: SwiperModel, index: number) => JSON.stringify(item)) } .index(0) .width('100%') @@ -364,11 +364,11 @@ export struct Detail { Flex({ justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) { Text() Flex({ justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) { - ForEach(this.phoneType, (item: PhoneTypeModel, index: int32) => { + ForEach(this.phoneType, (item: PhoneTypeModel, index: number) => { Image(`${item.uri}`) .objectFit(ImageFit.Contain) .width(35 * this.ratio) - }, (item: PhoneTypeModel, index: int32) => JSON.stringify(item)) + }, (item: PhoneTypeModel, index: number) => JSON.stringify(item)) Text('共6种机身颜色可选') .fontSize(13 * this.ratio) } @@ -456,12 +456,12 @@ export struct Detail { .margin({ top: 10, bottom: 10 } as Margin) Row() { - ForEach(this.showImg, (item: ShowImgModel, index: int32) => { + ForEach(this.showImg, (item: ShowImgModel, index: number) => { Image(item.uri) .objectFit(ImageFit.Cover) .width('25%') .height(100 * this.ratio) - }, (item: ShowImgModel, index: int32) => JSON.stringify(item)) + }, (item: ShowImgModel, index: number) => JSON.stringify(item)) } .backgroundColor(Color.Red) @@ -586,7 +586,7 @@ export struct Detail { .margin({ top: 10, bottom: 10 } as Margin) Flex({ justifyContent: FlexAlign.Center, wrap: FlexWrap.Wrap, alignContent: FlexAlign.Start }) { - ForEach(this.recommendData, (item: RecommendDataModel, index: int32) => { + ForEach(this.recommendData, (item: RecommendDataModel, index: number) => { Column() { Image(`${item.img}`) .objectFit(ImageFit.Contain) @@ -606,22 +606,22 @@ export struct Detail { .width('33%') .height('48%') .alignItems(HorizontalAlign.Start) - }, (item: RecommendDataModel, index: int32) => JSON.stringify(item)) + }, (item: RecommendDataModel, index: number) => JSON.stringify(item)) } .height('45%') } .margin({ top: 10 } as Margin) Column() { - ForEach(this.goodsList, (item: GoodsInfoModel, index: int32) => { + ForEach(this.goodsList, (item: GoodsInfoModel, index: number) => { Image(`${item.img}`) .width('100%') .objectFit(ImageFit.Cover) - }, (item: GoodsInfoModel, index: int32) => JSON.stringify(item)) + }, (item: GoodsInfoModel, index: number) => JSON.stringify(item)) } Flex({ justifyContent: FlexAlign.Start, wrap: FlexWrap.Wrap, alignContent: FlexAlign.Start }) { - ForEach(this.listImg, (item: ListDataModel, index: int32) => { + ForEach(this.listImg, (item: ListDataModel, index: number) => { Column() { Image(`${item.img}`) .objectFit(ImageFit.Contain) @@ -638,7 +638,7 @@ export struct Detail { .height('32%') .margin(5) .alignItems(HorizontalAlign.Center) - }, (item: ListDataModel, index: int32) => JSON.stringify(item)) + }, (item: ListDataModel, index: number) => JSON.stringify(item)) } } diff --git a/arkoala-arkts/shopping/src/ets/pages/homePage/User.ets b/arkoala-arkts/shopping/src/ets/pages/homePage/User.ets index 711fcd145..a75593f0c 100644 --- a/arkoala-arkts/shopping/src/ets/pages/homePage/User.ets +++ b/arkoala-arkts/shopping/src/ets/pages/homePage/User.ets @@ -94,7 +94,7 @@ export struct User { } Flex({ justifyContent: FlexAlign.SpaceAround, alignItems: ItemAlign.Center }) { - ForEach(this.record, (item: RecordModel, index: int32) => { + ForEach(this.record, (item: RecordModel, index: number) => { Column() { Image(item.img) .width(30 * this.ratio) @@ -113,7 +113,7 @@ export struct User { } as SearchParam }) }) - }, (item: RecordModel, index: int32) => JSON.stringify(item)) + }, (item: RecordModel, index: number) => JSON.stringify(item)) } Flex({ justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) { @@ -161,7 +161,7 @@ export struct User { } Flex({ justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) { - ForEach(this.orderData, (item: OrderModel, index: int32) => { + ForEach(this.orderData, (item: OrderModel, index: number) => { Column() { Image(item.img) .width(30 * this.ratio) @@ -171,7 +171,7 @@ export struct User { Text(item.title) .fontSize(12 * this.ratio) } - }, (item: OrderModel, index: int32) => JSON.stringify(item)) + }, (item: OrderModel, index: number) => JSON.stringify(item)) } .margin({ top: 10 } as Margin) @@ -211,7 +211,7 @@ export struct User { Column() { Flex({ justifyContent: FlexAlign.SpaceAround, alignItems: ItemAlign.Center }) { - ForEach(this.discountData, (item: DiscountModel, index: int32) => { + ForEach(this.discountData, (item: DiscountModel, index: number) => { Column() { Image(item.img) .width(35 * this.ratio) @@ -225,7 +225,7 @@ export struct User { .fontSize(12 * this.ratio) .fontColor(Color.Grey) } - }, (item: DiscountModel, index: int32) => JSON.stringify(item)) + }, (item: DiscountModel, index: number) => JSON.stringify(item)) } .margin({ top: 10 } as Margin) } @@ -236,7 +236,7 @@ export struct User { Column() { Flex({ justifyContent: FlexAlign.SpaceAround, alignItems: ItemAlign.Center }) { - ForEach(this.serviceData, (item: ServiceModel, index: int32) => { + ForEach(this.serviceData, (item: ServiceModel, index: number) => { Column() { Image(item.img) .width(30 * this.ratio) @@ -246,7 +246,7 @@ export struct User { Text(item.title) .fontSize(12 * this.ratio) } - }, (item: ServiceModel, index: int32) => JSON.stringify(item)) + }, (item: ServiceModel, index: number) => JSON.stringify(item)) } .margin({ top: 10 } as Margin) } diff --git a/arkoala-arkts/shopping/src/ets/pages/homePage/boutique.ets b/arkoala-arkts/shopping/src/ets/pages/homePage/boutique.ets index 990d0d47c..222f979a4 100644 --- a/arkoala-arkts/shopping/src/ets/pages/homePage/boutique.ets +++ b/arkoala-arkts/shopping/src/ets/pages/homePage/boutique.ets @@ -24,7 +24,7 @@ export struct Boutique { build() { Column() { Flex({ wrap: FlexWrap.Wrap, direction: FlexDirection.Row }) { - ForEach(this.boutiqueData, (item: BoutiqueModel, index: int32) => { + ForEach(this.boutiqueData, (item: BoutiqueModel, index: number) => { Column() { Text(item.text1) .fontSize(15 * this.ratio) @@ -46,7 +46,7 @@ export struct Boutique { } .width('50%') .alignItems(HorizontalAlign.Start) - }, (item: BoutiqueModel, index: int32) => JSON.stringify(item)) + }, (item: BoutiqueModel, index: number) => JSON.stringify(item)) } } .width('92%') diff --git a/arkoala-arkts/shopping/src/ets/pages/homePage/core1.ets b/arkoala-arkts/shopping/src/ets/pages/homePage/core1.ets index 92e2cf49c..11ec2ef57 100644 --- a/arkoala-arkts/shopping/src/ets/pages/homePage/core1.ets +++ b/arkoala-arkts/shopping/src/ets/pages/homePage/core1.ets @@ -26,10 +26,10 @@ export struct Core1 { build() { Column() { List() { - ForEach(this.cols, (item1: Number, index: int32) => { + ForEach(this.cols, (item1: Number, index: number) => { ListItem() { Grid() { - ForEach(this.rows, (item2: Number, index: int32) => { + ForEach(this.rows, (item2: Number, index: number) => { GridItem() { Column() { Image(`${this.coreData[item1.valueOf() * 2 + item2.valueOf()].uri}`) @@ -42,13 +42,13 @@ export struct Core1 { } } .width('100%') - }, (item2: Number, index: int32) => JSON.stringify(item2.valueOf())) + }, (item2: Number, index: number) => JSON.stringify(item2.valueOf())) } .rowsTemplate('1fr 1fr') .columnsTemplate('1fr') } .width('20%') - }, (item1: Number, index: int32) => JSON.stringify(item1.valueOf())) + }, (item1: Number, index: number) => JSON.stringify(item1.valueOf())) } .listDirection(Axis.Horizontal) .height(160 * this.ratio) diff --git a/arkoala-arkts/shopping/src/ets/pages/homePage/core2.ets b/arkoala-arkts/shopping/src/ets/pages/homePage/core2.ets index 24472e0e9..a14420691 100644 --- a/arkoala-arkts/shopping/src/ets/pages/homePage/core2.ets +++ b/arkoala-arkts/shopping/src/ets/pages/homePage/core2.ets @@ -26,10 +26,10 @@ export struct Core2 { build() { Column() { List() { - ForEach(this.cols, (item1: Number, index: int32) => { + ForEach(this.cols, (item1: Number, index: number) => { ListItem() { Grid() { - ForEach(this.rows, (item2: Number, index: int32) => { + ForEach(this.rows, (item2: Number, index: number) => { GridItem() { Column() { Image(`${this.coreData[item1.valueOf() * 2 + item2.valueOf()].uri}`) @@ -42,13 +42,13 @@ export struct Core2 { } } .width('100%') - }, (item2: Number, index: int32) => JSON.stringify(item2.valueOf())) + }, (item2: Number, index: number) => JSON.stringify(item2.valueOf())) } .rowsTemplate('1fr 1fr') .columnsTemplate('1fr') } .width('22.5%') - }, (item1: Number, index: int32) => JSON.stringify(item1.valueOf())) + }, (item1: Number, index: number) => JSON.stringify(item1.valueOf())) } .listDirection(Axis.Horizontal) .height('22%') diff --git a/arkoala-arkts/shopping/src/ets/pages/homePage/find.ets b/arkoala-arkts/shopping/src/ets/pages/homePage/find.ets index 242dd14e5..a958fe512 100644 --- a/arkoala-arkts/shopping/src/ets/pages/homePage/find.ets +++ b/arkoala-arkts/shopping/src/ets/pages/homePage/find.ets @@ -41,11 +41,11 @@ export struct FindPage { .vertical(true) .height('8%') Swiper() { - ForEach(this.searchText, (item: SearchTextModel, index: int32) => { + ForEach(this.searchText, (item: SearchTextModel, index: number) => { Text(item.searchText) .fontSize(15 * this.ratio) .fontColor(Color.Grey) - }, (item: SearchTextModel, index: int32) => JSON.stringify(item)) + }, (item: SearchTextModel, index: number) => JSON.stringify(item)) } .width('65%') .autoPlay(false) @@ -77,10 +77,10 @@ export struct FindPage { ListItem() { Flex({ justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) { - ForEach(this.titleText, (item: FindTitleTextModel, index: int32) => { + ForEach(this.titleText, (item: FindTitleTextModel, index: number) => { Text(item.titleText) .fontSize(15 * this.ratio) - }, (item: FindTitleTextModel, index: int32) => JSON.stringify(item)) + }, (item: FindTitleTextModel, index: number) => JSON.stringify(item)) } .padding({ left: 15, right: 15 } as Padding) } @@ -90,7 +90,7 @@ export struct FindPage { ListItem() { Column() { - ForEach(items, (item: Number, index: int32) => { + ForEach(items, (item: Number, index: number) => { Row() { Column() { ImageItem({ ratio: this.ratio }) @@ -105,7 +105,7 @@ export struct FindPage { .width('100%') .aspectRatio(1.1) .margin({ top: 10 } as Margin) - }, (item: Number, index: int32) => JSON.stringify(item.valueOf())) + }, (item: Number, index: number) => JSON.stringify(item.valueOf())) } .padding({ left: 10, right: 10 } as Padding) } diff --git a/arkoala-arkts/shopping/src/ets/pages/homePage/main.ets b/arkoala-arkts/shopping/src/ets/pages/homePage/main.ets index 11e37f41a..519ace5b0 100644 --- a/arkoala-arkts/shopping/src/ets/pages/homePage/main.ets +++ b/arkoala-arkts/shopping/src/ets/pages/homePage/main.ets @@ -48,7 +48,7 @@ export struct MainPage { .objectFit(ImageFit.Contain) Swiper() { - ForEach(this.searchData, (item: SearchTextModel, index: int32) => { + ForEach(this.searchData, (item: SearchTextModel, index: number) => { Column() { Text(item.searchText) .fontSize(14 * (this.ratio + 0.2)) @@ -65,7 +65,7 @@ export struct MainPage { } this.pathInfos.pushPath({name:'searchPage', param: searchParam}) }) - }, (item: SearchTextModel, index: int32) => JSON.stringify(item)) + }, (item: SearchTextModel, index: number) => JSON.stringify(item)) } .width('65%') .autoPlay(true) @@ -97,7 +97,7 @@ export struct MainPage { Column() { Row() { List() { - ForEach(this.navData, (item: NavDataModel, index: int32) => { + ForEach(this.navData, (item: NavDataModel, index: number) => { ListItem() { Text(item.navData) .fontColor(`${item.navData == '首页' ? Color.Blue : Color.Black}`) @@ -107,7 +107,7 @@ export struct MainPage { .lineHeight(30 * this.ratio) } .height(30 * this.ratio) - }, (item: NavDataModel, index: int32) => JSON.stringify(item)) + }, (item: NavDataModel, index: number) => JSON.stringify(item)) } .height(30 * this.ratio) .width('85%') @@ -127,7 +127,7 @@ export struct MainPage { .margin({ bottom: 0, left: 5, right: 5 } as Margin) Swiper() { - ForEach(this.swiperData, (item: SwiperModel, index: int32) => { + ForEach(this.swiperData, (item: SwiperModel, index: number) => { Image(item.img) .width('100%') .height('100%') @@ -141,7 +141,7 @@ export struct MainPage { this.pathInfos.pushPath({name:'detailPage',param:params}) }) - }, (item: SwiperModel, index: int32) => JSON.stringify(item)) + }, (item: SwiperModel, index: number) => JSON.stringify(item)) } .autoPlay(true) .loop(true) @@ -158,7 +158,7 @@ export struct MainPage { .margin({ top: 10 } as Margin) Flex({ justifyContent: FlexAlign.SpaceAround, alignItems: ItemAlign.Center }) { - ForEach(this.titleBarData, (item: TitleBarModel, index: int32) => { + ForEach(this.titleBarData, (item: TitleBarModel, index: number) => { Column() { Text(item.title) .fontSize(15 * this.ratio) @@ -171,7 +171,7 @@ export struct MainPage { this.tabsIndex = item.id this.controller.changeIndex(item.id) }) - }, (item: TitleBarModel, index: int32) => JSON.stringify(item)) + }, (item: TitleBarModel, index: number) => JSON.stringify(item)) } .height('7%') .zIndex(2) diff --git a/arkoala-arkts/shopping/src/ets/pages/homePage/shopCart.ets b/arkoala-arkts/shopping/src/ets/pages/homePage/shopCart.ets index a6cc4621e..e3dc8e38f 100644 --- a/arkoala-arkts/shopping/src/ets/pages/homePage/shopCart.ets +++ b/arkoala-arkts/shopping/src/ets/pages/homePage/shopCart.ets @@ -97,20 +97,20 @@ export struct ShopCart { Row() { Column() { - ForEach(this.cartNum, (item: Number, index: int32) => { + ForEach(this.cartNum, (item: Number, index: number) => { Column() { Other({ item: item.valueOf() % 6, ratio: this.ratio }) } - }, (item: Number, index: int32) => JSON.stringify(item.valueOf())) + }, (item: Number, index: number) => JSON.stringify(item.valueOf())) } .margin(2) Column() { - ForEach(this.cartNum, (item: Number, index: int32) => { + ForEach(this.cartNum, (item: Number, index: number) => { Column() { Other({ item: item.valueOf() % 6, ratio: this.ratio }) } - }, (item: Number, index: int32) => JSON.stringify(item.valueOf())) + }, (item: Number, index: number) => JSON.stringify(item.valueOf())) } .margin(2) } diff --git a/arkoala-arkts/shopping/src/ets/pages/index-entry.ets b/arkoala-arkts/shopping/src/ets/pages/index-entry.ets index 641d97a16..fcd6e8dd3 100644 --- a/arkoala-arkts/shopping/src/ets/pages/index-entry.ets +++ b/arkoala-arkts/shopping/src/ets/pages/index-entry.ets @@ -89,7 +89,7 @@ struct Index { Column() { Flex({ justifyContent: FlexAlign.SpaceAround, alignItems: ItemAlign.Center }) { - ForEach(this.tabTittleData, (item: TabTitleModel, index: int32) => { + ForEach(this.tabTittleData, (item: TabTitleModel, index: number) => { Flex({ direction: FlexDirection.Column, justifyContent: FlexAlign.Center, @@ -109,7 +109,7 @@ struct Index { this.tabsIndex = item.id this.controller.changeIndex(item.id) }) - }, (item: TabTitleModel, index: int32) => JSON.stringify(item)) + }, (item: TabTitleModel, index: number) => JSON.stringify(item)) } .height('8%') } diff --git a/arkoala-arkts/shopping/src/ets/pages/search/searchPage.ets b/arkoala-arkts/shopping/src/ets/pages/search/searchPage.ets index 886da2981..0f91af9e5 100644 --- a/arkoala-arkts/shopping/src/ets/pages/search/searchPage.ets +++ b/arkoala-arkts/shopping/src/ets/pages/search/searchPage.ets @@ -132,7 +132,7 @@ export struct SearchPage { if (this.flag) { Flex({ justifyContent: FlexAlign.Start, alignItems: ItemAlign.Center, wrap: FlexWrap.Wrap }) { - ForEach(this.exampleText, (item: ExampleDataModel, index: int32) => { + ForEach(this.exampleText, (item: ExampleDataModel, index: number) => { Button() { Text(item.exampleText) .fontSize(12 * this.ratio) @@ -142,7 +142,7 @@ export struct SearchPage { .margin(3) .height(30 * this.ratio) .backgroundColor('#f8f8f8') - }, (item: ExampleDataModel, index: int32) => JSON.stringify(item)) + }, (item: ExampleDataModel, index: number) => JSON.stringify(item)) } .margin({ left: 10, right: 10 } as Margin) } else { @@ -182,7 +182,7 @@ export struct SearchPage { .alignItems(HorizontalAlign.Start) List() { - ForEach(this.outerArray, (item: Number, index: int32) => { + ForEach(this.outerArray, (item: Number, index: number) => { ListItem() { Column() { Flex({ justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) { @@ -204,7 +204,7 @@ export struct SearchPage { } .padding({ left: 5, right: 5 } as Padding) - ForEach(this.innerArray, (item: Number, index: int32) => { + ForEach(this.innerArray, (item: Number, index: number) => { Flex({ justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) { Flex({ alignItems: ItemAlign.Center }) { Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) { @@ -231,7 +231,7 @@ export struct SearchPage { .padding({ left: 5, right: 5 } as Padding) .width('100%') .height(40 * this.ratio) - }, (item: Number, index: int32) => JSON.stringify(item.valueOf())) + }, (item: Number, index: number) => JSON.stringify(item.valueOf())) } .width('100%') } @@ -240,7 +240,7 @@ export struct SearchPage { .padding({ top: 5 } as Padding) .backgroundColor(Color.White) .width(`60%`) - }, (item: Number, index: int32) => JSON.stringify(item.valueOf())) + }, (item: Number, index: number) => JSON.stringify(item.valueOf())) } .listDirection(Axis.Horizontal) .height('70%') @@ -257,7 +257,7 @@ export struct SearchPage { } if (this.isFlag) { Column() { - ForEach(this.searched, (item: string, index: int32) => { + ForEach(this.searched, (item: string, index: number) => { Flex({ justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) { Row() { Image('/resources/icon/search.png') @@ -281,7 +281,7 @@ export struct SearchPage { this.isFlag = false this.value = item }) - }, (item: string, index: int32) => JSON.stringify(item)) + }, (item: string, index: number) => JSON.stringify(item)) } } } -- Gitee From f2a232a488b9bc7ec59f10a142d99275323c8076 Mon Sep 17 00:00:00 2001 From: Alexander Gorshenev Date: Wed, 25 Dec 2024 14:23:25 +0300 Subject: [PATCH 3/4] Dropped ets-plugin change Signed-off-by: Alexander Gorshenev --- arkoala/ets-plugin/src/Importer.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/arkoala/ets-plugin/src/Importer.ts b/arkoala/ets-plugin/src/Importer.ts index 4833ca394..69de0a7b1 100644 --- a/arkoala/ets-plugin/src/Importer.ts +++ b/arkoala/ets-plugin/src/Importer.ts @@ -257,7 +257,6 @@ export class Importer { temporary workaround for arkts reexport bug */ if (this.isArkts()) { - this.addCommonImport("int32") if (name === "LocalStorage") return this.addArkuiCommonImport(name) if (name === "observableProxy") return this.addArkuiCommonImport(name) } -- Gitee From 7e42b3d8f0545ea2836f5236fbfbfee10a0096bc Mon Sep 17 00:00:00 2001 From: Alexander Gorshenev Date: Wed, 25 Dec 2024 15:08:53 +0300 Subject: [PATCH 4/4] Include LazyForEach into the workaround Signed-off-by: Alexander Gorshenev --- arkoala-arkts/arkui/src/ForEach.ts | 2 ++ arkoala-arkts/arkui/src/LazyForEach.ts | 6 ++++-- arkoala-arkts/shopping/src/ets/pages/homePage/goodsList.ets | 4 ++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/arkoala-arkts/arkui/src/ForEach.ts b/arkoala-arkts/arkui/src/ForEach.ts index 580c14100..a7b27089b 100644 --- a/arkoala-arkts/arkui/src/ForEach.ts +++ b/arkoala-arkts/arkui/src/ForEach.ts @@ -16,6 +16,8 @@ import { int32, hashCodeFromString } from "@koalaui/common" import { RepeatByArray } from "@koalaui/runtime" +// TODO: due to compiler bug with optional lambdas we have to put +// index: number instead of index?: number here /** @memo */ export function ForEach(data: Array, /** @memo */ diff --git a/arkoala-arkts/arkui/src/LazyForEach.ts b/arkoala-arkts/arkui/src/LazyForEach.ts index c637f0463..426b0282b 100644 --- a/arkoala-arkts/arkui/src/LazyForEach.ts +++ b/arkoala-arkts/arkui/src/LazyForEach.ts @@ -60,11 +60,13 @@ class LazyForEachOps { } } +// TODO: due to compiler bug with optional lambdas we have to put +// index: number instead of index?: number here /** @memo */ export function LazyForEach(dataSource: IDataSource, /** @memo */ - itemGenerator: (item: T, index?: number) => void, - keyGenerator?: (item: T, index?: number) => string, + itemGenerator: (item: T, index: number) => void, + keyGenerator?: (item: T, index: number) => string, ) { let current = rememberMutableState(0) let mark = rememberMutableState(nullptr) diff --git a/arkoala-arkts/shopping/src/ets/pages/homePage/goodsList.ets b/arkoala-arkts/shopping/src/ets/pages/homePage/goodsList.ets index bfdbe1b9d..4822107b8 100644 --- a/arkoala-arkts/shopping/src/ets/pages/homePage/goodsList.ets +++ b/arkoala-arkts/shopping/src/ets/pages/homePage/goodsList.ets @@ -60,7 +60,7 @@ export struct GoodsList { build() { Column() { Grid() { - LazyForEach(this.data, (item: Number, index?: number): void => { + LazyForEach(this.data, (item: Number, index: number): void => { GridItem() { Column() { Image(this.productData[item.valueOf() % 14].uri) @@ -93,7 +93,7 @@ export struct GoodsList { .border({ width: 1, color: '#70808080', radius: 10 } as BorderOptions) .margin({ top: 3, bottom: 3 } as Margin) .backgroundColor(Color.White) - }, (item: Number): string => JSON.stringify(item.valueOf())) + }, (item: Number, index: number): string => JSON.stringify(item.valueOf())) } .columnsTemplate('1fr 1fr') .padding({ bottom: 60 } as Padding) -- Gitee