callback无法成功更新UI

我有一个如下的@state ViewModel,其中有一个成员变量title,直接在TestViewModel里延时修改title可以成功更新UI,而通过另外一个类的listener的callback修改同样的title不会更新UI,请问为什么,请问有什么办法解决么?期待您的回复,多谢多谢!

import { IBaseModelListener } from './IBaseModelListener'

export class TestViewModel implements IBaseModelListener {
  newsViewModel: NewsViewModel = new NewsViewModel(this)
  title: string = "aaa"

  onLoadFinish(data: string) {
    setTimeout(() => {
      this.title = "直接在TestViewModel里延时修改title可以成功更新UI,而通过另外一个类的listener的callback修改同样的title不会更新UI,请问有什么办法解决么?"
    }, 300)
  }

  refresh() {
    //通过另外一个类的listener的callback修改同样的title不会更新UI"
    this.newsViewModel.load()
/*    //"直接在TestViewModel里延时修改title可以成功更新UI"
    setTimeout(() => {
      hilog.error(0x0000, "Test", "直接在TestViewModel里延时修改title可以成功更新UI")
      this.title = "bbbb"
    }, 300)*/
  }
}

export class NewsViewModel {
  iBaseModelListener: IBaseModelListener = null;

  constructor(iBaseModelListener:IBaseModelListener) {
    this.iBaseModelListener = iBaseModelListener
  }

  load() {
    this.iBaseModelListener.onLoadFinish([])
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
UI框架
UI
2024-04-16 12:56:37
5269浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
Betsty

有如下几个问题:

1.) 函数  onLoadFinish 定义是需要字符串, 而在调用时传递的是空数组

2.) onLoadFinish中用到了异步操作, 有可能refresh执行在其前。 是否可以加 asyn/await试试?

分享
微博
QQ
微信
回复
2024-04-16 15:13:07


相关问题
HarmonyOS Native怎么更新UI?
739浏览 • 1回复 待解决
HarmonyOS Mqtt无法Connect成功
970浏览 • 1回复 待解决
HarmonyOS 更新数据后UI不刷新
1021浏览 • 1回复 待解决
HarmonyOS UI未在数据更新时刷新
757浏览 • 1回复 待解决
安装Apache成功后,为什么无法运行?
3364浏览 • 1回复 待解决
HarmonyOS 自定义弹窗如何更新弹窗的UI
874浏览 • 1回复 待解决
HarmonyOS 连续两次@Link之后UI更新
671浏览 • 1回复 待解决
NAN无法配网成功,设备侧联网失败
9688浏览 • 2回复 待解决
Js如何定义callback函数
2751浏览 • 1回复 待解决
使用js如何使用callback
865浏览 • 1回复 待解决
HarmonyOS @State无法更新组件的文本
573浏览 • 1回复 待解决