HarmonyOS鸿蒙Next中求助:HMRouter清除路由栈

HarmonyOS鸿蒙Next中求助:HMRouter清除路由栈 本人再项目里面用了HMRouter,不得不说挺好用的,但是出现了一个小问题

PageA——PageB-——PageC——PageD(保存数据)——PageA

除Replace去覆盖前面的页面栈,那么清除页面栈是什么呢?RemoveAll不行的,造成(返回)就退出App了。

2 回复

在HarmonyOS Next中,HMRouter清除路由栈可以使用clear()方法。该方法会清空当前路由栈中的所有页面,适用于需要完全重置导航状态的场景。示例代码:

import { router } from '@ohos.router';

// 清除所有路由栈
router.clear();

注意:调用后路由栈将为空,需立即跳转新页面否则会返回桌面。此操作不可逆,慎用。

更多关于HarmonyOS鸿蒙Next中求助:HMRouter清除路由栈的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next中使用HMRouter清除路由栈的正确方式是使用clearTop()方法。针对你的场景:

  1. 从PageD返回PageA时,应该使用:
HMRouter.getInstance()
    .withRoute("PageA")
    .clearTop()
    .navigate();
  1. clearTop()会保留目标页面(PageA)并清除栈中所有在其之上的页面(PageB/C/D),而不会导致应用退出。

  2. replace()的区别:

  • replace()只替换当前页面
  • clearTop()会清除目标页面上方的所有页面栈
  1. 注意不要使用removeAll(),这会导致整个路由栈被清空,从而退出应用。
回到顶部