HarmonyOS List嵌套不能同步数据

List({ scroller: this.scroller }) {  
  ForEach(this.list, (titleInfo: BusinessInfo) => {  
    ListItemGroup({  
      header: this.ClassifyHeader(titleInfo.MENU_NAME)  
    }) {  
      ListItem() {  
        Gid(){  
          ForEach(titleInfo.childs, (course: BusinessInfo, index: number) => {  
            GridItem() {  
            }  
          })  
        }  
      }  
    }  
  })  
}

this.list通过通知刷新数据后,build断点ForEach这一行断住了,里面的ListItemGroup不执行,请问怎么才能让里面的代码执行?BusinessInfo已经使用@Observed修饰。

HarmonyOS
2024-09-24 12:36:55
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
FengTianYa

请参考如下指导:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-observed-and-objectlink-V5#%E4%BA%8C%E7%BB%B4%E6%95%B0%E7%BB%84

demo代码如下,可以监听到二维数组内部变化。

@Observed  
class GidChilds {  
  name: string;  
  
  constructor(name: string) {  
    this.name = name;  
  }  
}  
  
@Observed  
class GidChildsArray extends Array<GidChilds> {  
  title: string = 'title';  
}  
  
@Component  
struct GridItemPage {  
  @ObjectLink child: GidChilds;  
  
  build() {  
    GridItem() {  
      Text(this.child.name)  
    }  
    .width('25%')  
  }  
}  
  
@Component  
struct ListItemPage {  
  @ObjectLink itemArr: GidChildsArray;  
  
  build() {  
    Row() {  
      Grid() {  
        ForEach(this.itemArr, (child: GidChilds, index) => {  
          GridItemPage({ child: child })  
            .width('25%')  
        }, (child: GidChilds) => JSON.stringify(child))  
      }  
    }  
  }  
}  
  
@Entry  
@Component  
struct IndexPage {  
  @State arr: Array<GidChildsArray> = [new GidChildsArray(), new GidChildsArray(), new GidChildsArray()];  
  aboutToAppear(): void {  
    this.arr[0].title = '1';  
    this.arr[1].title = '2';  
    this.arr[2].title = '3';  
  }  
  
  @Builder  
  ClassifyHeader(text: string) {  
    Text(text)  
      .fontSize(20)  
      .backgroundColor('#fff1f3f5')  
      .width('100%')  
      .padding(5)  
  }  
  
  build() {  
    Column() {  
      List() {  
        ForEach(this.arr, (itemArr: GidChildsArray) => {  
          ListItemGroup({ header: this.ClassifyHeader(itemArr.title) }) {  
            ListItem() {  
              ListItemPage({ itemArr: itemArr })  
            }  
          }  
        }, (itemArr: GidChildsArray) => JSON.stringify(itemArr.title))  
      }  
  
      Divider()  
  
      Button('create')  
        .onClick(() => {  
          this.arr[0].push(new GidChilds("a"))  
        })  
  
      Button('update')  
        .onClick(() => {  
          this.arr[0].forEach(item => {  
            item.name = "b"  
          })  
        })  
    }  
  }  
}
分享
微博
QQ
微信
回复
2024-09-24 18:03:54
相关问题
HarmonyOS scroll嵌套List不能整体滑动
485浏览 • 1回复 待解决
HarmonyOS List组件不能嵌套Grid组件吗
52浏览 • 1回复 待解决
HarmonyOS list 嵌套web滑动切换问题
490浏览 • 1回复 待解决
HarmonyOS List嵌套waterflow滑动卡顿
287浏览 • 1回复 待解决
嵌套ForEach不能自动适应高度
686浏览 • 1回复 待解决
scroll和list嵌套滑动
1518浏览 • 1回复 待解决
HarmonyOS Web组件和List嵌套使用问题
263浏览 • 1回复 待解决
Web和List嵌套手势冲突问题
1025浏览 • 1回复 待解决
refresh + scroll+list嵌套问题
379浏览 • 1回复 待解决
使用List嵌套实现表格布局
999浏览 • 1回复 待解决
多个数据库,同步数据
1917浏览 • 1回复 待解决
mysql 不同库数据同步
2518浏览 • 1回复 待解决
HarmonyOS 如何将异步数据改成同步
142浏览 • 1回复 待解决
HarmonyOS List组件数据更新错误
303浏览 • 0回复 待解决