HarmonyOS 如何监听DOM树刷新?

List({ space: 8 }) {
  ForEach(this.questionBean.options, (optionsBean: OptionsBean, index: number) => {
    ListItem() {
      this.itemPractice(optionsBean)
    }.onClick((e) => {
      this.questionBean.userAnswer = optionsBean.choose
      this.itemClick()
    })

我改变bean数据后,会异步刷新UI,这个时候,我想更新完UI后再触发一个事件,怎么才能做到

阅读 402
1 个回答

ArkUI是数据驱动页面进行刷新,若想要检测更新就是检查数据,可以用@watch监听状态变量,只要变化了就会走回调

import { promptAction } from '@kit.ArkUI';

@Entry
@Component
struct Index {
  @State message: string = 'Hello World';
  @State @Watch('change') num: number = 0;

  aboutToAppear(): void {
    //订阅事件,当事件被响应时执行触发时间
    getContext().eventHub.on('change', () => {
      console.log(`监听事情已触发`);
    })
  }

  change() {
    //状态变量变化,UI刷新,响应订阅时间
    //可自行通过条件控制在何时进行事件响应、调用emit方法
    getContext().eventHub.emit('change')
  }

  build() {
    Column() {
      Button('click').onClick(() => {
        this.num = this.num + 1
        promptAction.showToast({ message: `${this.num}` })
      })
    }.width('100%').height('100%').justifyContent(FlexAlign.Center)
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进