HarmonyOS UI 未刷新问题
@State 声明的 viewModel 中通过 eventHub 接收事件后修改 status 的值,UI 未刷新。
@Entry  
@Component  
struct StatusPage {  
  @State viewModel: ViewModel = new ViewModel()  
  
  aboutToAppear(): void {  
    this.viewModel.aboutToAppear(getContext(this))  
  }  
  
  build() {  
    Column({ space: 10 }) {  
      Text(this.viewModel.status)  
    }  
    .width('100%').height('100%')  
    .justifyContent(FlexAlign.Center)  
  }  
}  
  
@Observed  
class ViewModel {  
  status: string = '0'  
  
  aboutToAppear(context: Context): void {  
    context.eventHub.on('SyncText', this.syncText)  
  
    this.status = '1'  
  
    // setTimeout(() => {  
    //   console.log('------修改前', this.status)  
    //   this.status = '3'  
    //   console.log('------修改后', this.status)  
    // }, 5000)  
  
    setTimeout(() => {  
      context.eventHub.emit('SyncText', { text: '2' })  
    }, 2000)  
  }  
  
  syncText = (data: ESObject) => {  
    console.log('------receive syncText', data.text)  
    console.log('------修改前', this.status)  
    this.status = data.text  
    console.log('------修改后', this.status)  
  }  
}
        HarmonyOS
      
        赞
        
 收藏 0
 回答 1
 
        待解决
        
相关问题
 HarmonyOS UI不刷新问题 
1179浏览  • 1回复 待解决
HarmonyOS @Builder UI刷新问题 
1072浏览  • 1回复 待解决
HarmonyOS 数据刷新问题 
1087浏览  • 1回复 待解决
HarmonyOS 列表刷新问题 
1675浏览  • 1回复 待解决
HarmonyOS 页面刷新问题 
1479浏览  • 1回复 待解决
HarmonyOS webview刷新问题 
1195浏览  • 1回复 待解决
HarmonyOS 组件刷新问题 
1120浏览  • 1回复 待解决
HarmonyOS 页面跳转刷新问题 
2743浏览  • 1回复 待解决
HarmonyOS  swiper数据刷新问题 
999浏览  • 1回复 待解决
NativeWindowFlushBuffer接口刷新问题 
2800浏览  • 1回复 待解决
HarmonyOS  ForEach列表刷新问题 
1333浏览  • 1回复 待解决
HarmonyOS LazyForEach数据刷新问题 
991浏览  • 1回复 待解决
HarmonyOS List item 刷新问题 
1837浏览  • 1回复 待解决
HarmonyOS 页面数据刷新问题 
1751浏览  • 1回复 待解决
HarmonyOS 装饰器不刷新问题 
1208浏览  • 1回复 待解决
HarmonyOS使用Refresh下拉刷新问题 
1952浏览  • 1回复 待解决
HarmonyOS  组件的下拉刷新问题 
1508浏览  • 1回复 待解决
HarmonyOS 二维数组刷新问题 
1389浏览  • 1回复 待解决
HarmonyOS ForEach创建的视图刷新问题 
923浏览  • 1回复 待解决
HarmonyOS 自定义弹窗刷新问题 
1011浏览  • 1回复 待解决
HarmonyOS BuilderParam传入的Builder方法刷新问题 
854浏览  • 1回复 待解决
HarmonyOS 状态变量不刷新问题 
2104浏览  • 2回复 待解决
HarmonyOS LazyForEach问题刷新UI问题 
1330浏览  • 1回复 待解决
HarmonyOS ForEach循环渲染组件视图刷新问题 
1291浏览  • 1回复 待解决
HarmonyOS overlay机制调用后界面刷新问题 
1355浏览  • 1回复 待解决





















具体原因请参考:
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-state-0000001774279614-V5#ZH-CN_TOPIC_0000001834459288__%E4%BD%BF%E7%94%A8%E7%AE%AD%E5%A4%B4%E5%87%BD%E6%95%B0%E6%94%B9%E5%8F%98%E7%8A%B6%E6%80%81%E5%8F%98%E9%87%8F%E6%9C%AA%E7%94%9F%E6%95%88
该问题根因还是因为修改对象内容,修改未被代理到。如下Demo中,通过断点可以发现,syncText1中的this是不带有proxy的,syncText中的this是带有proxy的。syncText1相当于在构造对象的时候就被执行了,类似于“在构造函数中对成员变量进行赋值和修改”,此修改是不会经过代理的,也就无法被观测到。