HarmonyOS lazyforEach渲染问题
class BasicDataSource implements IDataSource {
  private listeners: DataChangeListener[] = [];
  private originDataArray: NestedString[] = [];
  public totalCount(): number {
    return 0;
  }
  public getData(index: number): NestedString {
    return this.originDataArray[index];
  }
  registerDataChangeListener(listener: DataChangeListener): void {
    if (this.listeners.indexOf(listener) < 0) {
      console.info('add listener');
      this.listeners.push(listener);
    }
  }
  unregisterDataChangeListener(listener: DataChangeListener): void {
    const pos = this.listeners.indexOf(listener);
    if (pos >= 0) {
      console.info('remove listener');
      this.listeners.splice(pos, 1);
    }
  }
  notifyDataReload(): void {
    this.listeners.forEach(listener => {
      listener.onDataReloaded();
    })
  }
  notifyDataAdd(index: number): void {
    this.listeners.forEach(listener => {
      listener.onDataAdd(index);
    })
  }
  notifyDataChange(index: number): void {
    this.listeners.forEach(listener => {
      listener.onDataChange(index);
    })
  }
  notifyDataDelete(index: number): void {
    this.listeners.forEach(listener => {
      listener.onDataDelete(index);
    })
  }
  notifyDataMove(from: number, to: number): void {
    this.listeners.forEach(listener => {
      listener.onDataMove(from, to);
    })
  }
}
class MyDataSource extends BasicDataSource {
  private dataArray: NestedString[] = [];
  public totalCount(): number {
    return this.dataArray.length;
  }
  public getData(index: number): NestedString {
    return this.dataArray[index];
  }
  public addData(index: number, data: NestedString): void {
    this.dataArray.splice(index, 0, data);
    this.notifyDataAdd(index);
  }
  public pushData(data: NestedString): void {
    this.dataArray.push(data);
    this.notifyDataAdd(this.dataArray.length - 1);
  }
}
@Observed
class NestedString {
  message: string;
  constructor(message: string) {
    this.message = message;
  }
}
@Entry
@Component
struct MyComponent {
  private moved: number[] = [];
  @State data: MyDataSource = new MyDataSource();
  aboutToAppear() {
    for (let i = 0; i <= 20; i++) {
      this.data.pushData(new NestedString(`Hello ${i}`));
    }
  }
  build() {
    List({ space: 3 }) {
      LazyForEach(this.data, (item: NestedString, index: number) => {
        ListItem() {
          Row() {
            // 这里的不改变  内侧的改变
            Text(item.message).fontSize(50)
            ChildComponent({ data: item })
          }
        }
        .onClick(() => {
          item.message += '0'
        })
      }, (item: NestedString, index: number) => JSON.stringify(item) + index.toString())
    }.cachedCount(5)
  }
}
@Component
struct ChildComponent {
  @ObjectLink data: NestedString
  build() {
    Row() {
      Text(this.data.message).fontSize(50)
        .onAppear(() => {
          console.info("appear:" + this.data.message)
        })
    }.margin({ left: 10, right: 10 })
  }
}
同层级的ui没有修改,子元素的反而更改了。
        HarmonyOS
      
        赞
        
 收藏 0
 回答 1
 
        待解决
        
相关问题
 使用LazyForEach渲染语法渲染组件,UI不刷新。 
2639浏览  • 1回复 待解决
HarmonyOS LazyForEach问题刷新UI问题 
1330浏览  • 1回复 待解决
HarmonyOS swiper + LazyForEach使用问题 
1560浏览  • 1回复 待解决
HarmonyOS lazyForEach数据应用问题 
1091浏览  • 1回复 待解决
HarmonyOS lazyForEach的key问题 
730浏览  • 1回复 待解决
HarmonyOS lazyForeach嵌套视图问题 
1202浏览  • 1回复 待解决
HarmonyOS 使用LazyForeach双层嵌套时,选中渲染需滑出可视区域后返回才能渲染上 
1171浏览  • 1回复 待解决
HarmonyOS LazyForEach数据刷新问题 
991浏览  • 1回复 待解决
HarmonyOS  LazyForEach组件dataSource使用问题 
2208浏览  • 2回复 待解决
HarmonyOS LazyForEach无法检测数据源的变化进行重新渲染 
1243浏览  • 1回复 待解决
HarmonyOS 数组修改item对象的某个值,notifyDataReload无法重新渲染LazyForEach 
1081浏览  • 1回复 待解决
#鸿蒙通关秘籍# 在HarmonyOS NEXT开发中,使用LazyForEach循环渲染列表时需要注意哪些问题? 
1353浏览  • 1回复 待解决
使用ForEach/LazyForEach渲染语法渲染组件,组件仅显示一个或者丢失部分子组件。 
1546浏览  • 1回复 待解决
HarmonyOS ForEach、LazyForEach重新渲染item的时候,item里的图片会闪动 
1628浏览  • 1回复 待解决
HarmonyOS 界面数据渲染问题 
1200浏览  • 1回复 待解决
#鸿蒙通关秘籍#如何利用鸿蒙的LazyForEach组件高效渲染长列表? 
1448浏览  • 1回复 待解决
HarmonyOS 富文本渲染问题 
1490浏览  • 1回复 待解决
HarmonyOS LazyForEach 
1100浏览  • 1回复 待解决
使用LazyForEach懒加载列表相关问题 
2244浏览  • 1回复 待解决
如何解决使用foreach&lazyforeach循环渲染时,会出现更改数据源时,界面不刷新的问题 
2402浏览  • 1回复 待解决
HarmonyOS @ObjectLink 渲染组件更新同步问题 
902浏览  • 1回复 待解决
HarmonyOS 使用opengles进行渲染时,无法成功渲染上屏的问题 
1222浏览  • 1回复 待解决
HarmonyOS List中LazyForEach嵌套Component组件生命周期问题 
1129浏览  • 1回复 待解决
HarmonyOS  ArkWeb同层渲染宽高问题 
1020浏览  • 1回复 待解决
HarmonyOS LazyForEach修改数据源不刷新问题 
2265浏览  • 1回复 待解决





















对于Text组件来说item.message属性改变是多层嵌套的变化无法观察到所以未引起当前UI的刷新:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-observed-and-objectlink-V5#基础嵌套对象属性更改失效