HarmonyOS @Monitor没有响应

@ObservedV2
class Data {
  @Trace text = ''

  @Monitor('text')
  textChange() {
    console.log('Monitor')
  }
}

@ComponentV2
struct TestC {
  data = new Data()

  build() {
    TextField({ text: this.data.text })
  }
}

以上是简化过的代码,往TextField中传入被@Trace修饰的text,在TextField修改时textChange方法没有响应,这是什么原因?

HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Excelsior_abit

将TextInput和data.text双向数据绑定后可以实现想要的效果,参考demo如下:

@Entry
@ComponentV2
struct Index {
  data: Data = new Data();

  build() {
    Column() {
      Button("change name")
        .onClick(() => {
          this.data.name = "Jack"; // 能够触发onNameChange方法
        })
      Text(`name:${this.data.name}`)
      TextInput({ text: $$this.data.text })
      Text(this.data.text)
    }
  }
}

@ObservedV2
class Data {
  @Trace name: string = "Tom";
  @Trace text: string = '0'

  // name被@Trace装饰,能够监听变化
  @Monitor("name")
  onNameChange(monitor: IMonitor) {
    console.log(`name change from ${monitor.value()?.before} to ${monitor.value()?.now}`);
  }

  @Monitor("text")
  onTextChange(monitor: IMonitor) {
    console.log(`Text change from ${monitor.value()?.before} to ${monitor.value()?.now}`);
  }
}
分享
微博
QQ
微信
回复
1天前
相关问题
Failed to start MySQL Monitor.
3419浏览 • 2回复 待解决
HarmonyOS Tab组件无法响应onPageShow
509浏览 • 1回复 待解决
HarmonyOS点击事件传递响应问题
20浏览 • 1回复 待解决
HarmonyOS 手势响应不同角度问题
291浏览 • 1回复 待解决
HarmonyOS 不同页面之间如何响应通信
68浏览 • 1回复 待解决
TextInput的defaultFocus不响应
1618浏览 • 1回复 待解决
应用中http请求响应2300023
2188浏览 • 1回复 待解决
HarmonyOS 上传下载如何获取请求响应
430浏览 • 1回复 待解决