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 列表刷新问题
471浏览 • 1回复 待解决
HarmonyOS 页面刷新问题
217浏览 • 1回复 待解决
HarmonyOS List item 刷新问题
648浏览 • 1回复 待解决
HarmonyOS使用Refresh下拉刷新问题
701浏览 • 1回复 待解决
HarmonyOS 组件的下拉刷新问题
376浏览 • 1回复 待解决
HarmonyOS 页面跳转刷新问题
623浏览 • 1回复 待解决
NativeWindowFlushBuffer接口刷新问题
1919浏览 • 1回复 待解决
HarmonyOS 二维数组刷新问题
185浏览 • 1回复 待解决
HarmonyOS overlay机制调用后界面刷新问题
454浏览 • 1回复 待解决
HarmonyOS 状态变量不刷新问题
329浏览 • 1回复 待解决
鸿蒙页面检测不到数据发生改变的刷新问题,能否强制刷新
9608浏览 • 1回复 待解决
HarmonyOS LazyForEach修改数据源不刷新问题
164浏览 • 1回复 待解决
HarmonyOS 如何动态添加TabContent以及自定义tabbarUI刷新问题?
257浏览 • 1回复 待解决
Web组件加载在线页面存在2次刷新问题
453浏览 • 1回复 待解决
HarmonyOS Grid组件使用ForEach网格布局,Ui数据更新问题
453浏览 • 1回复 待解决
HarmonyOS 主线程刷新UI
136浏览 • 1回复 待解决
状态装饰器 ui不刷新的问题
2347浏览 • 1回复 待解决
HarmonyOS 数据改变未刷新页面
513浏览 • 0回复 待解决
列表数组中插入数据后,刷新UI的问题
247浏览 • 1回复 待解决
UI预览不会自动刷新, 且刷新较慢
442浏览 • 1回复 待解决
HarmonyOS 使用@Observed和@ObjectLink修饰的自定义数据模型viewModel刷新问题
426浏览 • 1回复 待解决
HarmonyOS 关于objectLink在数组对象中使用时,修改数据页面不刷新问题
443浏览 • 1回复 待解决
HarmonyOS Grid容器视图更新问题
388浏览 • 1回复 待解决
IF条件变化后UI不刷新
650浏览 • 1回复 待解决
求告知如何强制刷新UI?
263浏览 • 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相当于在构造对象的时候就被执行了,类似于“在构造函数中对成员变量进行赋值和修改”,此修改是不会经过代理的,也就无法被观测到。