绑定类型的组件和foreach的正确连用方式

bindSheet和foreach合用的问题,$$this.isShow会弹出两次半模态,如果是this.isShow,则会半模态弹出的次数是数组的长度数,如何在某一个foreach中的item点击的时候只弹出一个弹窗。

HarmonyOS
2024-07-23 10:36:22
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
lovingkane

关键代码:给每一个弹窗都绑定一个@State修饰的变量,有很多个弹窗的话,这里用数组就很方便。

@Entry 
@Component 
export struct BindSheetDemo { 
  @State isShow: boolean = false 
  arr: number[] = [1, 2, 3, 4] 
  @State isHoverText: Array<boolean> = new Array<boolean>(this.arr.length).fill(false) 
 
  @Builder 
  myBuilder() { 
    Column() { 
      Button("content1") 
        .margin(10) 
        .fontSize(20) 
 
      Button("content2") 
        .margin(10) 
        .fontSize(20) 
    } 
    .width('100%') 
  } 
 
  build() { 
    Column() { 
      ForEach(this.arr, (item: number, idx: number) => { 
        Row() { 
          Text("银行卡") 
          Button("立减14元") 
            .onClick(() => { 
              this.isHoverText[idx] = true; 
            }) 
            .fontSize(15) 
            .margin(10) 
            .bindSheet(this.isHoverText[idx], this.myBuilder(), { 
              backgroundColor: Color.Gray, 
              height: SheetSize.MEDIUM, 
              showClose: true, 
              onDisappear: () => { 
                this.isHoverText[idx] = false; 
              } 
            }) 
          Checkbox() 
        }.border({ width: 1, radius: 5 }) 
      }) 
    } 
    .justifyContent(FlexAlign.Start) 
    .width('100%') 
    .height('100%') 
  } 
}
分享
微博
QQ
微信
回复
2024-07-23 18:31:39
相关问题
自定义组件传值绑定
919浏览 • 1回复 待解决
tabs组件页面组合联动方式
623浏览 • 1回复 待解决
ArkTS简单类型变量双向数据绑定
1444浏览 • 1回复 待解决
HarmonyOS 组件类型用什么表示?
227浏览 • 1回复 待解决
关于HAP包entryfeature类型
11091浏览 • 1回复 待解决