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
2024-12-25 14:03:23
浏览
收藏 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
微信
回复
2024-12-25 16:21:57
相关问题
Failed to start MySQL Monitor.
3517浏览 • 2回复 待解决
HarmonyOS Worker不响应问题
37浏览 • 1回复 待解决
HarmonyOS 控件点击事件无响应
125浏览 • 1回复 待解决
HarmonyOS点击事件传递响应问题
204浏览 • 1回复 待解决
HarmonyOS Tab组件无法响应onPageShow
702浏览 • 1回复 待解决
HarmonyOS 手势响应不同角度问题
372浏览 • 1回复 待解决
HarmonyOS 不同页面之间如何响应通信
282浏览 • 1回复 待解决
TextInput的defaultFocus不响应
1800浏览 • 1回复 待解决
应用中http请求响应2300023
2509浏览 • 1回复 待解决