HarmonyOS Repeat无法正确刷新

在Repeat里如果使用@Builder,更新数据源时无法正确刷新,ForEach就可以。下面代码可以稳定复现,点击Button后,只有Repeat里的builder显示错误。

// xxx.ets

@ObservedV2
class HomeState {
  @Trace tabs: string[] = ['1']
}

@Entry
@ComponentV2
struct RepeatBugExample {
  @Local state = new HomeState()
  build() {
    Column({space: 20}) {
      Button('change state')
        .onClick(() => {
          this.state.tabs[0] = '3'
        })
      Column({space: 4}) {
        Repeat(this.state.tabs).each((e) => {
          Text(`Repeat: ${e.item}`)
          buildText(`Use builder in Repeat: ${e.item}`)
        })
        ForEach(this.state.tabs, (e:string) => {
          Text(`ForEach: ${e}`)
          buildText(`Use builder in ForEach: ${e}`)
        })
      }
    }
    .width('100%')
    .height('100%')
    .justifyContent(FlexAlign.Center)
    .alignItems(HorizontalAlign.Center)
  }

  renderLog(name: string) {
    console.log(`log ${name}`)
    return 1
  }
}

@Builder
function buildText(name: string) {
  Text(name)
}
HarmonyOS
2025-01-09 16:19:44
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zxjiu

可以使用以下方式:

@ObservedV2
class HomeState {
  @Trace tabs: string[] = ['1']
}

@Entry
@ComponentV2
struct RepeatBugExample {
  @Local state = new HomeState()
  build() {
    Column({space: 20}) {
      Button('change state')
        .onClick(() => {
          this.state.tabs[0] = '3'
        })
      Column({space: 4}) {
        Repeat(this.state.tabs).each((e) => {
          Text(`Repeat: ${e.item}`)
          buildText(e)
        })
      }
    }
    .width('100%')
    .height('100%')
    .justifyContent(FlexAlign.Center)
    .alignItems(HorizontalAlign.Center)
  }

  renderLog(name: string) {
    console.log(`log ${name}`)
    return 1
  }
}

@Builder
function buildText(e: RepeatItem<string>) {
  Text(`Use builder in Repeat: ${e.item}`)
}
分享
微博
QQ
微信
回复
2025-01-09 18:26:05
相关问题
HarmonyOS 无法正确生成
373浏览 • 1回复 待解决
HarmonyOS Navigation无法正确显示
283浏览 • 1回复 待解决
HarmonyOS tab组件无法刷新
486浏览 • 1回复 待解决
HarmonyOS 平板无法正确横竖屏切换
501浏览 • 1回复 待解决
HarmonyOS 列表多选页面无法刷新
354浏览 • 1回复 待解决
HarmonyOS px2vp在模拟器上无法正确转换
921浏览 • 1回复 待解决
HarmonyOS 如何正确使用LazyForEach?
271浏览 • 1回复 待解决
HarmonyOS 如何正确配置应用图标
318浏览 • 1回复 待解决
HarmonyOS 如何正确的打印对象?
333浏览 • 1回复 待解决
HarmonyOS ForEach局部刷新
1008浏览 • 1回复 待解决
HarmonyOS Canvas怎么刷新
373浏览 • 1回复 待解决
HarmonyOS 刷新控件问题
524浏览 • 1回复 待解决