HarmonyOS 鸿蒙Next 如何优雅的关闭一套页面
HarmonyOS 鸿蒙Next 如何优雅的关闭一套页面 使用场景: 添加银行卡,需要选择银行,OCR卡,短信验证绑定等中间页面。
添加成功后,中间路径页面数量不定,如何优雅地关闭这一串页面呢?
个人中心 A,支付中心 B,订单详情 C,这三个页面,都可以触发银行卡 D 流程。
银行卡绑定有页面 D1,D2,D3,D4,D5(具体路径不定)。
当银行卡绑定成功后,如何优雅地关闭 D 系列页面,并将绑定结果返回给调用方(A 或者 B 或者 C)。
根据你说的情况,这边路由推荐使用Navigation,而且后续开发也是支持Navigation,Router不再演进,Navigation可以获取到路由栈NavPathStack,并对路由栈进行操作,可以清理指定路由等其他功能,参考文档:Navigation文档
根页面只有一个,你在@Entry
修饰的根页面建立路由栈NavPathStack,然后在他子页面使用NavDestination来进行路由跳转,清理等功能,如果是跨har包,可以通过import导入,添加到pageMap中
数据对比目前是没有的,但性能方面有如下对比:
-
Router配合
@Entry
的路由方式存在一些弊端:页面与页面之间相互独立,无法产生关联,尤其在复杂动效互动场景下(页面之间元素进行共享互动)很难实现;@Entry
方式通过工具链生成自执行代码,一旦当前模块加载就会自动执行代码生成页面,无法让管控加载和销毁逻辑。 -
Navigation传递参数性能更优,Navigation通过引用传递,Router通过深拷贝完成
-
Navigation可以配合动态加载,实现组件动态加载,Router页面使用
@Entry
进行修饰,当前模块加载时会生成全量页面
更多关于HarmonyOS 鸿蒙Next 如何优雅的关闭一套页面的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
照我说简单点你就把需要返回的参数保存在一个全局变量(例如一个单例)里,然后pop到你想要的ABC页面,然后在ABC页面里去取相关的参数即可。是不是非常简单~~~
(PS:因为我觉得使用HMRouter太麻烦了。。。。)
标题
这是第一步
这是第二步
这是第三步
使用HMRouter。 直接pop到对应的页面。
或者自己实现 需要循环pop。通过id判断。
https://developer.huawei.com/consumer/cn/doc/best-practices-V5/bpta-hmrouter-V5
在HarmonyOS(鸿蒙)系统中,优雅地关闭一套页面通常涉及到页面栈的管理。鸿蒙系统提供了丰富的页面导航和生命周期管理能力,使得开发者可以高效地控制页面的显示和隐藏。
要优雅地关闭一套页面,可以采取以下步骤:
-
获取页面栈:首先,需要获取当前的页面栈。鸿蒙系统提供了相应的API来访问页面栈信息。
-
移除指定页面:通过页面栈的API,可以移除指定的页面或者移除页面栈中的一系列页面。这通常涉及到对页面实例的引用或者页面标识符的使用。
-
更新页面栈:在移除页面之后,需要确保页面栈的状态被正确更新,以便系统能够正确地渲染剩余的页面。
-
处理页面生命周期:在关闭页面时,要注意处理页面的生命周期事件,如
onDestroy
等,确保资源的正确释放和数据的保存。 -
用户交互反馈:为了提供流畅的用户体验,可以在关闭页面时给出适当的动画效果或用户提示。
请注意,具体的实现细节可能因应用的结构和页面导航方式的不同而有所差异。开发者需要根据自己的应用需求来选择合适的API和实现方式。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html,