《鸿蒙开发-答案之书》集合传单个值给Component,Component修改了这个值,集合里面的值会不会变呢

64 阅读1分钟
《鸿蒙开发-答案之书》集合传单个值给Component,Component修改了这个值,集合里面的值会不会变呢

先说答案:会变

简单示例代码:

     Grid() {
        ForEach(this.listGreetingUser, (ext: ListGreetingUserBean,index:number) => {
          GridItem() {
            ItemView({item:ext,index:index})
          }
          .height(50)
        },(ext: ListGreetingUserBean) => JSON.stringify(ext))
      }
      .columnsTemplate('1fr 1fr 1fr')
      .columnsGap(20)
      .rowsGap(20)
      .width('100%')
      .scrollBar(BarState.Off)
      .maxCount(this.listGreetingUser?.length-1) // 设它自适应高度
      .padding({
        left:24,
        right:24
      })
@Component
struct  ItemView{
  @State item:ListGreetingUserBean = {select:true}
  index:number = 0
  build() {
    Stack(){
      Image(this.item.headImg)
        .width(50)
        .height(50)
        .borderRadius(25)
      Image(this.item.select?$r('app.media.ic_batch_greet_selected'):$r('app.media.ic_batch_greet_unselected'))
        .width(17)
        .height(17)
        .onClick(()=>{
          this.item.select = !this.item.select

        })
    }
    .alignContent(Alignment.BottomEnd)
  }

}

看代码你改变的是当前item的值,但是集合listGreetingUser对应的值也是改了的。

有鸿蒙开发需求或者问题的可以私信我,我每天都看私信的