HarmonyOS鸿蒙Next中Navigation回传数据

HarmonyOS鸿蒙Next中Navigation回传数据 目前我们使用的 Navigation(首页根容器) + NavDestination(子页面) + NavPathStack(栈管理),但是子页面传值回上一个页面怎么实现,NavPathStack在pop的时候没有传参的地方,参考的是这个实现(https://gitee.com/openharmony/applications_app_samples.git

2 回复

在HarmonyOS鸿蒙Next中,Navigation组件的回传数据可以通过AbilitySlicesetResult方法实现。具体步骤如下:

  1. 设置回传数据:在源AbilitySlice中,使用setResult方法设置需要回传的数据。例如:

    let result = new Result();
    result.setResultCode(0); // 设置结果码
    result.setResultData("回传数据"); // 设置回传数据
    this.setResult(result);
    
  2. 接收回传数据:在目标AbilitySlice中,通过重写onAbilityResult方法来接收回传的数据。例如:

    onAbilityResult(requestCode: number, resultCode: number, resultData: string) {
        if (requestCode === YOUR_REQUEST_CODE) {
            if (resultCode === 0) {
                console.log("接收到的回传数据:" + resultData);
            }
        }
    }
    
  3. 启动目标AbilitySlice:使用startAbilityForResult方法启动目标AbilitySlice,并指定请求码。例如:

    let intent = new Intent();
    intent.setAbilityName("com.example.TargetAbilitySlice");
    this.startAbilityForResult(intent, YOUR_REQUEST_CODE);
    

通过以上步骤,可以在HarmonyOS鸿蒙Next中实现Navigation组件的回传数据功能。

更多关于HarmonyOS鸿蒙Next中Navigation回传数据的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)Next中,Navigation组件用于实现页面间的导航和跳转。要在页面间回传数据,可以通过以下步骤:

  1. 启动目标页面并传递数据:使用router.push()router.replace()方法,通过params参数传递数据。

    router.push({
        url: 'pages/TargetPage',
        params: { key: 'value' }
    });
    
  2. 在目标页面接收数据:通过router.getParams()方法获取传递的数据。

    const params = router.getParams();
    console.log(params.key); // 输出 'value'
    
  3. 返回数据到源页面:在目标页面使用router.back()方法,并通过params参数回传数据。

    router.back({
        params: { returnKey: 'returnValue' }
    });
    
  4. 源页面接收返回数据:在源页面监听onShow()生命周期函数,获取返回的数据。

    onShow() {
        const returnParams = router.getParams();
        console.log(returnParams.returnKey); // 输出 'returnValue'
    }
    

通过这种方式,可以在鸿蒙Next中实现页面间的数据传递与回传。

回到顶部