HarmonyOS 鸿蒙Next中如何进行页面传值?
HarmonyOS 鸿蒙Next中如何进行页面传值?
3 回复
使用router中的params属性进行传值, 在跳转页面使用aboutToAppear(){const res =router.getparams()}进行接受完成页面传值
参考:https://developer.huawei.com/consumer/cn/forum/topic/0202171299967930633?fid=0109140870620153026
更多关于HarmonyOS 鸿蒙Next中如何进行页面传值?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在鸿蒙Next中,页面传值主要使用Want和AbilityConstant模块。通过Want对象携带参数,在startAbility时传递。接收方在onCreate回调中通过AbilityConstant模块获取参数。常用方法包括:
- Want对象设置参数uri或parameters;
- 接收方使用featureAbility.getWant()获取参数。
跨设备传值需使用分布式能力。UI页面间传值可用EventHub发布订阅事件。
在HarmonyOS Next中,页面传值主要有以下几种方式:
- 使用AbilityContext的startAbility()传值:
let want = {
bundleName: "com.example.myapp",
abilityName: "SecondAbility",
parameters: {
key1: "value1",
key2: 123
}
};
this.context.startAbility(want);
- 使用AbilityConstant.StartOptions传值:
let options = {
windowMode: 0,
parameters: {
key: "value"
}
};
this.context.startAbility(want, options);
- 通过EventHub进行跨页面通信: 在第一个页面注册事件:
this.context.eventHub.on("myEvent", (data) => {
console.log("收到数据:" + data);
});
在第二个页面触发事件:
this.context.eventHub.emit("myEvent", "要传递的数据");
- 使用AppStorage全局共享数据:
AppStorage.SetOrCreate<string>("globalData", "共享值");
let value = AppStorage.Get<string>("globalData");
- 使用LocalStorage页面级共享:
let storage = new LocalStorage();
@Entry(storage)
@Component
struct MyComponent {
@LocalStorageProp('key') value: string = 'default';
build() {
// 使用value
}
}
选择哪种方式取决于具体场景:
- 简单数据传递:使用Ability参数传递
- 跨页面通信:使用EventHub
- 全局共享数据:使用AppStorage
- 组件间共享:使用LocalStorage