HarmonyOS 父组件的数据源监听到没变化,但是UI刷新了

@Entry
@Component
struct StateCompenent01Page {
  @State @Watch("Changed") showStrArr: Array<ShowMessageModel> = []

  aboutToAppear(): void {

    let model01: ShowMessageModel = new ShowMessageModel('我是展示文字01')
    this.showStrArr.push(model01)

    let model02: ShowMessageModel = new ShowMessageModel('我是展示文字02')
    this.showStrArr.push(model02)

    let model03: ShowMessageModel = new ShowMessageModel('我是展示文字03')
    this.showStrArr.push(model03)
  }
  Changed() {
    console.info('我变了呀')
    this.showStrArr.forEach((model: ShowMessageModel) => {
      console.info(model.showStr)
    })
  }
  build() {
    Column() {
      List() {
        Repeat<ShowMessageModel>(this.showStrArr)
          .each((obj: RepeatItem<ShowMessageModel>) => {
            ListItem() {
              Text() {
                Span(obj.item.showStr)
                Span(obj.item.ifSelected == true ? '选中' : '未选中')
              }
            }
          })
      }

      List() {
        ForEach(this.showStrArr, (itemModel: ShowMessageModel, index: number) => {
          ListItem() {
            Text() {
              Span(itemModel.showStr)
              Span(itemModel.ifSelected == true ? '选中' : '未选中')
            }
          }
        }, (item: ShowMessageModel): string => item.ifSelected.toString()
        )
      }
      .margin({
        top: 20
      })

      List() {
        ForEach(this.showStrArr, (itemModel: ShowMessageModel, index: number) => {
          ListItem() {
            ItemView({ itemModel: this.showStrArr[index] })
          }
        }, (item: ShowMessageModel): string => item.ifSelected.toString()
        )
      }
      .margin({
        top: 20
      })
    }
  }
}

有两个疑问

1,如果只有第2和第3个list,在点击第3个list里面的onclick事件时,为什么第2个list不刷新UI

2,如果只有第1和第3个list, 在点击第3个list里面的onclick事件时,第1个list会刷新UI,但是watch没有监听到数据源的变化

HarmonyOS
2025-01-09 15:26:20
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Excelsior_abit

增强状态管理对类对象中属性的观测能力,可以使用@ObservedV2装饰器和@Trace装饰器装饰类以及类中的属性可参考demo:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-new-observedv2-and-trace-V5#%E5%B5%8C%E5%A5%97%E7%B1%BB%E5%9C%BA%E6%99%AF

分享
微博
QQ
微信
回复
2025-01-09 17:24:44
相关问题
HarmonyOS 如何监听到音频焦点变化
525浏览 • 1回复 待解决
HarmonyOS picker选择器数据源问题
395浏览 • 1回复 待解决
lazyforeach替换数据源解决方案
1280浏览 • 1回复 待解决
IF条件变化UI刷新
1083浏览 • 1回复 待解决