相关问题
#鸿蒙通关秘籍#如何在HarmonyOS中使用Sendable进行大容量数据库操作?
53浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙中使用TaskPool处理同步任务?
52浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS中使用effectKit进行图像模糊处理?
93浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS中使用axios获取接口数据?
113浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙中使用ArkUI的WaterFlow组件实现瀑布流布局?
51浏览 • 1回复 待解决
#鸿蒙通关秘籍# 如何在HarmonyOS NEXT中使用ArkUI进行动态UI更新?
150浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS中使用axios获取网络电影数据?
94浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙ArkUI中使用Tab组件实现Tab页面的动态增删?
53浏览 • 1回复 待解决
#鸿蒙通关秘籍# 如何在ArkUI中使用Button组件并对其样式进行定制?
179浏览 • 2回复 待解决
#鸿蒙通关秘籍# 如何在HarmonyOS NEXT中使用@LocalStorageProp实现单向数据同步?
88浏览 • 0回复 待解决
#鸿蒙通关秘籍# 如何在HarmonyOS NEXT中使用List组件展示列表数据?
152浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在 HarmonyOSNext 中使用 Preferences 设置和获取本地数据?
95浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS NEXT中使用ArkUI的页面生命周期方法?
95浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS NEXT中使用ArkUI创建一个轮播图组件?
120浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙系统中使用关系型数据库实现数据持久化?
53浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙中使用put()方法插入数据到键值型数据库
81浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙中使用$set和$delete方法操作数据?
25浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙应用中使用标准化数据通路实现数据更新?
63浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS中使用TaskPool进行频繁数据库操作?
66浏览 • 1回复 待解决
#鸿蒙通关秘籍# 如何在HarmonyOS NEXT中使用Button组件?
136浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在Image组件中使用复制选项?
85浏览 • 1回复 待解决
#鸿蒙通关秘籍# 如何在HarmonyOS NEXT中使用Image组件?
139浏览 • 1回复 待解决
#鸿蒙通关秘籍# 如何在HarmonyOS NEXT中使用Text组件?
138浏览 • 1回复 待解决
#鸿蒙通关秘籍# 如何在HarmonyOS NEXT中使用本地存储?
113浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在应用中处理数据库的数据迁移?
35浏览 • 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
使数据变为可观察对象。