HarmonyOS router若干问题

问题一:router栈的上限为32,app内的页面跳转可能会超过32,这上限可以突破吗?

问题二:栈内有A-B-C时,在C内调用方法以下方法回到了B内,但在B内无法通过router.back()返回A,这是为什么?有解决方法吗? router.replaceUrl({ url: B }, router.RouterMode.Single)

补充说明:回到B内后,从B开始跳转了新页面,也同样不能通过router.back()回到上一页。

HarmonyOS
4天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Excelsior_abit

问题一:在HarmonyOS中,页面路由栈的上限为32页面。这是为了确保系统的稳定性和性能优化。如果在应用内的页面跳转过程中超过了这个上限,是无法继续添加新的页面的。具体来说:HarmonyOS的页面路由栈支持的最大Page数量为32。当页面栈内的页面数量达到32时,无法再添加新的页面。

因此,在进行页面跳转时,需要合理管理页面栈,确保不会超过这个上限。虽然页面栈有上限,但可以通过其他方式来实现页面之间的跳转和管理,例如使用导航组件和模态转场来实现更灵活的页面切换。

参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/6_40_u6a21_u6001_u8f6c_u573a_u8bbe_u7f6e-V5

问题二:在页面 C 中调用 router.replaceUrl 方法回到 B 后,无法通过 router.back() 返回 A。 router.replaceUrl 方法是替换当前页面,这意味着当前页面(C)被替换为新的页面(B),因此在栈中不存在 C 了。这会导致当前页面 C 被替换成 B,栈中不再包含 C。

所以,当在页面 B 时,router.back() 无法返回到 A,因为 A 已经不在栈中了。

要解决这个问题,可以考虑以下方法:

1、使用 router.push 而不是 router.replaceUrl

2、通过页面参数传递状态,在页面跳转时传递状态参数,以便在页面 B 中知道从哪里跳转过来,必要时可以手动处理返回逻辑。例如:

router.push({
  url: '/B',
  params: {
    from: 'C'
  }
}, router.RouterMode.Single)
分享
微博
QQ
微信
回复
4天前
相关问题
HarmonyOS router 返回问题
351浏览 • 1回复 待解决
HarmonyOS router跳转问题
520浏览 • 2回复 待解决
HarmonyOS router路由跳转问题
491浏览 • 0回复 待解决
HarmonyOS router传参获取问题
537浏览 • 1回复 待解决
HarmonyOS router路由路径的问题
553浏览 • 1回复 待解决
HarmonyOS router.back返回页面问题
45浏览 • 1回复 待解决
router传递hashmap参数问题
1571浏览 • 1回复 待解决
router 路由跳转相关问题
353浏览 • 1回复 待解决
router.getParams使用问题
766浏览 • 1回复 待解决
HarmonyOS 关于router.back问题的咨询
460浏览 • 1回复 待解决
HarmonyOS router打开har下页面的问题
408浏览 • 1回复 待解决
HarmonyOS router pushUrl报错
685浏览 • 1回复 待解决
HarmonyOS router.replaceUrl
45浏览 • 1回复 待解决
HarmonyOS 关于router.back()
733浏览 • 1回复 待解决
Class Router和namespace router有什么区别
1623浏览 • 1回复 待解决
HarmonyOS Navigation和router怎么用
34浏览 • 1回复 待解决
HarmonyOS 跳转方式Router和Navigator
409浏览 • 1回复 待解决
HarmonyOS Router如何返回指定页面
40浏览 • 1回复 待解决
HarmonyOS router无法跳转,并报错。
584浏览 • 1回复 待解决