HarmonyOS鸿蒙Next中两个page怎么传递函数、方法或者闭包

发布于 1周前 作者 htzhanglong 来自 鸿蒙OS

HarmonyOS鸿蒙Next中两个page怎么传递函数、方法或者闭包 大佬们好,麻烦问下怎么在两个页面之前传递函数、方法或者闭包?

3 回复

更多关于HarmonyOS鸿蒙Next中两个page怎么传递函数、方法或者闭包的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,两个Page之间传递函数、方法或闭包可以通过AbilitySliceIntent对象实现。具体步骤如下:

  1. 在发送方Page中,将函数、方法或闭包封装到一个Parcelable对象中。由于函数、方法或闭包本身无法直接序列化,可以通过自定义类来实现Parcelable接口,将函数逻辑封装到该类中。

  2. 将封装好的Parcelable对象通过IntentputParcelableParam方法传递到目标Page。

  3. 在接收方Page中,通过IntentgetParcelableParam方法获取传递过来的Parcelable对象,并执行其中的逻辑。

示例代码如下:

// 发送方Page
class MyParcelable implements Parcelable {
    private func: () => void;

    constructor(func: () => void) {
        this.func = func;
    }

    // 实现Parcelable接口的方法
    // ...

    execute() {
        this.func();
    }
}

let myFunc = () => {
    console.log("Function executed");
};

let parcelable = new MyParcelable(myFunc);
let intent = new Intent();
intent.putParcelableParam("myFunc", parcelable);
// 启动目标Page
// ...
// 接收方Page
let intent = // 获取Intent对象
let parcelable = intent.getParcelableParam("myFunc") as MyParcelable;
parcelable.execute();

通过这种方式,可以在两个Page之间传递函数、方法或闭包。

在HarmonyOS鸿蒙Next中,可以通过AbilityContextIntent在不同Page之间传递数据。如果需要传递函数、方法或闭包,可以将其封装为Parcelable对象或使用EventBus等事件总线机制。例如,通过Intent传递时,可以将函数或闭包序列化为字符串,并在接收端反序列化后执行。或者使用EventBus发布事件,在目标Page中订阅并处理该事件,从而实现函数或闭包的传递。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!