#鸿蒙通关秘籍#如何在ArkUI中使用makeObserved处理Sendable数据?
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
#鸿蒙通关秘籍#如何在HarmonyOS中使用Sendable进行大容量数据库操作?
292浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙中使用TaskPool处理同步任务?
306浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS中使用effectKit进行图像模糊处理?
269浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS中使用axios获取接口数据?
311浏览 • 1回复 待解决
#鸿蒙通关秘籍# 如何在HarmonyOS NEXT中使用ArkUI进行动态UI更新?
354浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙中使用ArkUI的WaterFlow组件实现瀑布流布局?
341浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在ArkUI中使用AppStorage和LocalStorage进行状态管理?
292浏览 • 1回复 待解决
#鸿蒙通关秘籍# 如何在ArkUI中使用Button组件并对其样式进行定制?
469浏览 • 2回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS中使用axios获取网络电影数据?
314浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙ArkUI中使用Tab组件实现Tab页面的动态增删?
345浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙开发中使用MMKV进行键值对数据存储?
337浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS NEXT中使用ArkUI创建一个轮播图组件?
369浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS NEXT中使用ArkUI的页面生命周期方法?
336浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在 HarmonyOSNext 中使用 Preferences 设置和获取本地数据?
244浏览 • 1回复 待解决
#鸿蒙通关秘籍# 如何在HarmonyOS NEXT中使用List组件展示列表数据?
422浏览 • 1回复 待解决
#鸿蒙通关秘籍# 如何在HarmonyOS NEXT中使用@LocalStorageProp实现单向数据同步?
291浏览 • 0回复 待解决
#鸿蒙通关秘籍#如何在OpenHarmony中使用MMKV实现数据备份和恢复?
377浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙中使用put()方法插入数据到键值型数据库
312浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙系统中使用关系型数据库实现数据持久化?
314浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙中使用$set和$delete方法操作数据?
243浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙中使用IPC Kit进行跨进程数据传递?
217浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在OpenHarmony中使用dataORM进行数据库映射?
280浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙应用中使用标准化数据通路实现数据更新?
295浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙长时任务中使用WantAgent?
219浏览 • 1回复 待解决
#鸿蒙通关秘籍# 如何在HarmonyOS NEXT中使用Image组件?
366浏览 • 1回复 待解决
要在ArkUI中从子线程获取Sendable类型的数据并使其对UI变化可观察,可以使用
UIUtils.makeObserved
。这个函数在接收@Sendable
类型的数据后,赋予了它观察能力,能触发UI的自动刷新。下面的代码展示了如何实现这一功能:typescript import { taskpool } from '@kit.ArkTS'; import { SendableData } from './SendableData'; import { UIUtils } from '@kit.ArkUI';
@Concurrent function threadGetData(param: string): SendableData { let ret = new SendableData(); console.info(
Concurrent threadGetData, param ${param}
); ret.name = param + "-o"; ret.age = Math.floor(Math.random() * 40); ret.likes = Math.floor(Math.random() * 100); return ret; }@Entry @ComponentV2 struct Index { @Local send: SendableData = UIUtils.makeObserved(new SendableData());
build() { Column() { Text(this.send.name) Button("change name").onClick(() => { this.send.name += "0"; })
} }
通过这个例子,数据在子线程中处理,并传回主UI线程,由
UIUtils.makeObserved
使数据变为可观察对象。