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
2天前
浏览
收藏 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
微信
回复
2天前
相关问题
HarmonyOS 无法正确生成
149浏览 • 1回复 待解决
HarmonyOS Navigation无法正确显示
120浏览 • 1回复 待解决
HarmonyOS tab组件无法刷新
187浏览 • 1回复 待解决
HarmonyOS 平板无法正确横竖屏切换
173浏览 • 1回复 待解决
HarmonyOS 列表多选页面无法刷新
176浏览 • 1回复 待解决
HarmonyOS px2vp在模拟器上无法正确转换
771浏览 • 1回复 待解决
HarmonyOS 如何正确使用LazyForEach?
119浏览 • 1回复 待解决
HarmonyOS 如何正确的打印对象?
133浏览 • 1回复 待解决
HarmonyOS 如何正确配置应用图标
25浏览 • 1回复 待解决
HarmonyOS so库的正确引用方式
166浏览 • 1回复 待解决
HarmonyOS Canvas怎么刷新
194浏览 • 1回复 待解决
HarmonyOS 刷新控件问题
257浏览 • 1回复 待解决