鸿蒙NEXT-HMRouter,在使用router后无法跳转问题解决
作者使用HMRouter,搭建鸿蒙三层架构完成App时候,在登录页进入首页的时候遇到了一个Bug,使用Router跳转后,在HMRouter中无法跳转页面了,现在将该bug的解决方法分享出来。
错误示例代码如下:
import { router } from '@kit.ArkUI';
@Entry @ComponentV2 struct LoginPage { @State message: string = 'Hello World'; aboutToAppear(): void { console.log('LifeCircle创建') } onDidBuild(): void { console.log('LifeCircle组件构建完成') } onPageShow(): void { console.log('页面-PageShow') } onPageHide(): void { console.log('页面-Page隐藏') } build() { Column(){ /登录页面代码省略*/ } .onVisibleAreaChange([1.0],()=>{ /省略登录校验过程/ router.replaceUrl({url:'pages/Index'}) }) } } 作者为了方便,直接在onVisibleAreaChange中直接登录跳转到首页去了,到了首页发现,使用HMRouter无法跳转到其他页面了。
分析错误原因:
onVisibleAreaChange 是高频触发的回调,若在此处直接跳转,可能因页面未完全初始化导致路由状态异常。(页面生命周期冲突)
解决方案:
避免在 onVisibleAreaChange 中直接跳转,改用显式触发(如按钮点击)或页面生命周期回调
例如下面示例代码
import { router } from '@kit.ArkUI';
@Entry @Component struct LoginPage{ @State message: string = 'Hello World'; aboutToAppear(): void { router.replaceUrl({url:'pages/Index'}) console.log('LifeCircle创建') } onDidBuild(): void { console.log('LifeCircle组件构建完成') } onPageShow(): void { console.log('页面-PageShow') } onPageHide(): void { console.log('页面-Page隐藏') } build() { Column(){ } } } 在aboutToAppear中,进行页面跳转即可。
实际结果:在页面生命周期回调中跳转到首页后,HMRouter,可以正常跳转页面。Bug修改成功
- 0回答
- 0粉丝
- 0关注
- Image白块问题解决
- [HarmonyOS]解决HMRouter路由地址无法抽取的问题
- 鸿蒙NEXT-API19获取上下文,在class中和ability中获取上下文,API迁移示例-解决无法在EntryAbility中无法使用最新版API获取上下文
- OpenHarmony:我看谁还在router 跳转时传 Map 类型
- 鸿蒙开发:如何解决软键盘弹出后的间距
- 鸿蒙Navigation处理启动页跳转到首页问题
- 鸿蒙开发:使用nestedScroll解决滑动冲突
- 【HarmonyOS】HMRouter使用详解(二)
- 鸿蒙NEXT-鸿蒙三层架构搭建,嵌入HMRouter,实现便捷跳转,新手攻略。(1/3)
- 【HarmonyOS】HMRouter使用详解(四)路由拦截
- 【HarmonyOS】HMRouter使用详解(一)环境配置
- 【HarmonyOS】HMRouter使用详解(三)生命周期
- Uniapp在鸿蒙中的使用 二
- 鸿蒙Next如何处理相机在全屏预览的时候,画面会有变形和拉伸的问题?
- 求助:关于元服务中使用preferences的相关问题